> For the complete documentation index, see [llms.txt](https://docs.autocontentapi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.autocontentapi.com/quick-start/tools/track-requests.md).

# Track Requests & Status Codes

Most AutoContent generation endpoints are asynchronous. Submit the job, save the returned request ID exactly as-is, poll the status endpoint, and only read final asset fields once the request reaches `100`.

## Step 1: Save the Request ID

Different endpoints may return the same concept with slightly different field names:

* `request_id`
* `requestId`

Examples:

```json
{
  "request_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": 0
}
```

```json
{
  "requestId": "video-550e8400-e29b-41d4-a716-446655440000",
  "status": 0
}
```

Keep the full value unchanged. Some endpoints prefix the ID with the job type, such as `video-...` or `research-podcast-...`.

## Step 2: Poll `/content/Status/{id}`

Use the exact request ID returned by the create call:

```bash
curl -X GET "https://api.autocontentapi.com/content/Status/YOUR_REQUEST_ID" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
```

Typical in-progress response:

```json
{
  "id": "YOUR_REQUEST_ID",
  "status": 5,
  "updated_on": "2026-03-11T19:10:00Z",
  "error_code": 0,
  "requested_on": "2026-03-11T19:08:00Z"
}
```

## Step 3: Interpret the Status Value

The two stable states are:

* `0`: accepted and queued
* `100`: completed

Intermediate values vary by endpoint. Common examples include:

| Status                             | Meaning           | Where you may see it                           |
| ---------------------------------- | ----------------- | ---------------------------------------------- |
| `5`                                | Early processing  | Podcasts, research-backed flows, several tools |
| `10`, `20`, `30`, `60`, `80`, `90` | Mid-pipeline work | Endpoint-specific generation stages            |

Treat any value between `1` and `99` as "still running" unless the response also includes an error.

## Step 4: Read Success and Error Fields

Once the request reaches `100`, the payload includes output-specific fields. Common ones include:

* `audio_url` for podcast outputs
* `video_url` or similar media URLs for video endpoints
* `document_url` or `briefing_doc_url` for PDF briefing documents
* `document_content` for `html` or `text` briefing documents
* `datatable_url` for generated data table spreadsheets
* `image_url` for generated infographics
* `slide_deck_url` for generated slide decks
* `quiz_json` for generated quizzes
* `response_text` for generated transcript or text content
* `share_url` for hosted result pages

Error metadata can also vary slightly by endpoint. Watch for either:

* `error_code` or `errorCode`
* `error_message` or `errorMessage`

If the response includes a non-zero error value, use [Error Codes](/error-codes.md) to diagnose the failure before retrying.

## Step 5: Use `callbackData` for Reconciliation

Some endpoints accept an optional `callbackData` field. Use it as your own stable job reference, for example:

* a CMS entry ID
* a campaign or customer ID
* an internal workflow run ID

When a workflow supports webhook notifications, `callbackData` is the safest way to map the incoming event back to your system. Keep it short, machine-readable, and unique per job.

## Endpoint-Specific Notes

* Briefing documents: poll `/content/Status/{id}` first, then use `/documents/{id}` only after the job has completed.
* Data tables: poll `/content/Status/{id}` first, then use `/data-tables/get` for history or `/data-tables/{id}/download` for the spreadsheet.
* Infographics, slide decks, and quizzes: poll `/content/Status/{id}` first, then use their artifact-specific list/download endpoints for authenticated retrieval.
* Deep research: the research creation flow uses `/deep-research/research/{id}` while the downstream content generation still uses `/content/Status/{id}`.
* Tools such as transcription, speaker separation, and voice cloning still follow the same "save ID, poll, read final result" pattern.

## Related Endpoints

* `GET /content/Status/{id}` - Check the status of a generated content request.
* `GET /deep-research/research/{id}` - Check the status of a deep research request.

## What's Next?

* Need a reusable file ID first? Follow [Upload Private Files](/quick-start/tools/upload-files.md).
* Working with documents? See [Create a Briefing Document](/quick-start/documents/create-document.md).
* Need troubleshooting details? Review [Error Codes](/error-codes.md).
