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

# Publish media

> Publish a finished media container to your Instagram account.

Step 3 of the publish flow. Publishes a container whose `status_code` is `FINISHED`.

Meta allows 50 publishes per rolling 24 hours, currently being raised to 100. Check live usage with `GET /{instagramAccountId}/content_publishing_limit`.

## Authentication

Use the `hmat_` channel token from `GET /meta/channels/{id}/token` or `hookmyapp channels env <channel>`. Do not use an `hmok_` API key for this call.

```bash theme={null}
Authorization: Bearer hmat_...
```

## Path parameters

<ParamField path="instagramAccountId" type="string" required>
  The connected Instagram account ID.
</ParamField>

## Request body

<ParamField body="creation_id" type="string" required>
  The `FINISHED` container ID.
</ParamField>

## Example

```bash theme={null}
curl -X POST "https://gateway.hookmyapp.com/meta/v25.0/{INSTAGRAM_ACCOUNT_ID}/media_publish" \
  -H "Authorization: Bearer hmat_..." \
  -H "Content-Type: application/json" \
  -d '{ "creation_id": "17900000000000001" }'
```

## Successful response

```json theme={null}
{ "id": "17850000000000000" }
```

The returned ID is the published media ID — use it for [media insights](/instagram/api/insights/get-media-insights) and [comments](/instagram/api/comments/list-comments).
