> ## Documentation Index
> Fetch the complete documentation index at: https://growi.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Get an ad

> The same fields as a row of GET /meta_ads.

Returns one Meta ad and its publish status. The fields match a row of [List ads](/api-reference/endpoint/meta-ads/list-ads).

## Ad fields

| Field | Meaning |
| - | - |
| `id` | Growi ad id. Use it with get, launch and pause. |
| `meta_ad_id` | Meta's ad id, once the ad is on Meta |
| `state` | Growi publish state: `queued`, `publishing`, `published`, `active` or `failed` |
| `status` | Meta delivery status, such as `PAUSED`, `ACTIVE` or `DELETED` |
| `published` | `true` once the ad exists on Meta |
| `failed`, `error_message`, `last_step` | Why and where publishing or launching failed |
| `campaign_affiliate_id` | The creator enrollment credited for this ad's spend |
| `external` | `true` for ads imported from Ads Manager |

## Authentication

Any organization API key works, including view-only keys. A key acts as the person who created it, so that person needs the owner, admin or viewer role. See [Rate limits and authentication](/api-reference/introduction).

## Errors

| Status | When |
| - | - |
| `401` | Missing or invalid API key, or the person who created the key is no longer an owner, admin or viewer of the organization |
| `404` | No ad with this id in your organization, or organization\_id is not a child brand of the key's organization |
| `429` | Rate limited: 2 seconds between requests, and 40 requests per hour per key by default |

<RequestExample>
  ```bash cURL theme={"dark"}
  curl -X GET "https://api.growi.io/api/public/v1/meta_ads/5012" \
       -H "Authorization: Bearer YOUR_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"dark"}
  {
    "success": true,
    "data": {
      "id": 5012,
      "name": "Ava ad",
      "meta_ad_id": "120214567890123456",
      "state": "published",
      "status": "PAUSED",
      "published": true,
      "failed": false,
      "error_message": null,
      "last_step": "ad",
      "meta_ad_set_id": 78552828,
      "meta_ad_set_name": "Broad US",
      "campaign_affiliate_id": 3490313,
      "external": false,
      "created_at": "2026-10-14T13:05:11Z"
    }
  }
  ```

  ```json 404 theme={"dark"}
  {
    "success": false,
    "error": "Meta ad not found"
  }
  ```
</ResponseExample>


## OpenAPI

````yaml GET /meta_ads/{id}
openapi: 3.0.1
info:
  title: Growi API
  description: >-
    API documentation for Growi platform, showcasing the public tracking event
    endpoint
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.growi.io/api/public/v1
security:
  - bearerAuth: []
paths:
  /meta_ads/{id}:
    get:
      summary: Gets one Meta ad and its publish status
      description: The same fields as a row of GET /meta_ads.
      parameters:
        - name: organization_id
          in: query
          required: false
          schema:
            type: integer
          description: >-
            Act on a child brand of the API key's organization. Omit it to act
            on the key's own organization. Any other id returns 404.
        - name: id
          in: path
          required: true
          schema:
            type: integer
          description: Growi ad id
          example: 5012
      responses:
        '200':
          description: The ad
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Growi ad id
                      name:
                        type: string
                      meta_ad_id:
                        type: string
                        nullable: true
                        description: Meta's ad id, once published
                      state:
                        type: string
                        enum:
                          - queued
                          - publishing
                          - published
                          - active
                          - failed
                        description: Growi publish state
                      status:
                        type: string
                        description: 'Meta delivery status: PAUSED, ACTIVE, DELETED, ...'
                      published:
                        type: boolean
                        description: true once the ad exists on Meta
                      failed:
                        type: boolean
                      error_message:
                        type: string
                        nullable: true
                        description: Why publishing or launching failed
                      last_step:
                        type: string
                        nullable: true
                        description: The publish step that ran last (for example launch)
                      meta_ad_set_id:
                        type: integer
                        nullable: true
                      meta_ad_set_name:
                        type: string
                        nullable: true
                      campaign_affiliate_id:
                        type: integer
                        nullable: true
                        description: The creator enrollment credited for this ad's spend
                      external:
                        type: boolean
                        description: true for ads imported from Ads Manager
                      created_at:
                        type: string
                        format: date-time
              example:
                success: true
                data:
                  id: 5012
                  name: Ava ad
                  meta_ad_id: '120214567890123456'
                  state: published
                  status: PAUSED
                  published: true
                  failed: false
                  error_message: null
                  last_step: ad
                  meta_ad_set_id: 78552828
                  meta_ad_set_name: Broad US
                  campaign_affiliate_id: 3490313
                  external: false
                  created_at: '2026-10-14T13:05:11Z'
        '401':
          description: >-
            Missing or invalid API key, or the person who created the key is no
            longer an owner, admin or viewer of the organization
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  error:
                    type: string
              examples:
                missing_key:
                  summary: Missing or invalid key
                  value:
                    error: Not Authenticated
                creator_left:
                  summary: Key creator no longer in the organization
                  value:
                    success: false
                    error: >-
                      The user who created this API key no longer has access to
                      this organization.
        '404':
          description: No ad with this id in your organization
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  error:
                    type: string
              examples:
                ad:
                  summary: No ad with this id in your organization
                  value:
                    success: false
                    error: Meta ad not found
                organization:
                  summary: organization_id is not a child brand
                  value:
                    success: false
                    error: Organization not found
        '429':
          description: >-
            Rate limited: 2 seconds between requests, and 40 requests per hour
            per key by default
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  retry_after:
                    type: integer
                  reset_time:
                    type: string
              examples:
                burst:
                  summary: Under 2 seconds since the last request
                  value:
                    error: >-
                      Rate limit exceeded. Please wait 2 seconds between
                      requests.
                    retry_after: 2
                hourly:
                  summary: Hourly cap reached
                  value:
                    error: Hourly rate limit of 40 requests exceeded.
                    retry_after: 1520
                    reset_time: '2026-10-12T15:00:00Z'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.