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

# List approvals

> List media buys in your approval queue, filterable by lifecycle status

`GET /api/v2/storefront/media-buy-approvals`

Lists approval-queue entries for your storefront, newest first. Pending entries are ordered by submission time; decided history is ordered by review time. Defaults to `status=pending` — the operator queue — so you do not have to thread the filter manually. Pass `?status=` to see decided history and `?take=` to limit the number returned.

## Request

<CodeGroup>
  ```bash Pending queue theme={null}
  curl "https://api.apostra.com/api/v2/storefront/media-buy-approvals" \
    -H "Authorization: Bearer $SCOPE3_API_KEY"
  ```

  ```bash Approved history theme={null}
  curl "https://api.apostra.com/api/v2/storefront/media-buy-approvals?status=approved&take=20" \
    -H "Authorization: Bearer $SCOPE3_API_KEY"
  ```
</CodeGroup>

## Parameters

| Field    | Type    | Required | Notes                                                                                                |
| -------- | ------- | -------- | ---------------------------------------------------------------------------------------------------- |
| `status` | enum    | No       | Query param — `pending`, `approved`, `rejected`, or `revoked`. Omit to return only `pending` entries |
| `take`   | integer | No       | Query param — return at most this many newest entries. Minimum `1`, maximum `100`                    |

## Response

```json theme={null}
[
  {
    "id": "42",
    "storefrontId": "1234",
    "mediaBuyId": "mb_2026_q2_ctv",
    "buyerCustomerId": 8801,
    "submittedPayload": {
      "media_buy_id": "mb_2026_q2_ctv",
      "total_budget": 50000,
      "currency": "USD"
    },
    "status": "pending",
    "reviewedBy": null,
    "reviewedAt": null,
    "reviewerNotes": null,
    "forwardedAt": null,
    "createdAt": "2026-06-02T10:00:00Z",
    "updatedAt": "2026-06-02T10:00:00Z",
    "readiness": {
      "packages": [
        {
          "mediaProductId": "ctv-run-of-network",
          "buyerRef": "mb_2026_q2_ctv_pkg_ctv",
          "assignedCreativeIds": [],
          "unusableCreatives": [
            {
              "creativeId": "cr_audio_15s",
              "reason": "slot \"audio\" requires a duration of at least 30000ms but asset is 15047ms"
            }
          ],
          "unusableCreativeCount": 1,
          "compatibleUnattachedCreativeIds": [],
          "compatibleUnattachedCreativeCount": 0
        }
      ],
      "packageCount": 1,
      "creativelessPackageCount": 1,
      "creativeSyncFailures": [],
      "creativeSyncFailureCount": 0
    }
  }
]
```

Each element is a full `PendingMediaBuyResponse`. `reviewedBy`, `reviewedAt`, `reviewerNotes`, and `forwardedAt` are `null` while an entry is `pending`. Without `take`, this endpoint returns all matching entries without pagination.

`readiness` reports whether the buy can actually deliver — see [Delivery readiness](/v2/storefront/media-buy-approvals/overview#delivery-readiness). It is `null` on decided entries, on `update` approvals, and when the check could not run.

## Errors

* `400 VALIDATION_ERROR` — invalid `status` or `take` value.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Get an approval" href="/v2/storefront/media-buy-approvals/tasks/get-approval" icon="magnifying-glass">
    Inspect one queue entry
  </Card>

  <Card title="Decide an approval" href="/v2/storefront/media-buy-approvals/tasks/decide-approval" icon="gavel">
    Approve or reject a pending media buy
  </Card>

  <Card title="Media-buy approval tasks" href="/v2/storefront/media-buy-approvals/tasks" icon="list-check">
    All media-buy approval operations
  </Card>

  <Card title="Media-buy approvals overview" href="/v2/storefront/media-buy-approvals/overview" icon="clipboard-check">
    Queue lifecycle and concepts
  </Card>
</CardGroup>
