

Transcription, AI generation, clip assembly, and exports can run asynchronously. Poll jobs for status or use webhooks for push notifications.

## Endpoints [#endpoints]

* `GET /v1/jobs/{job_id}`
* `GET /v1/projects/{project_id}/jobs`
* `POST /v1/projects/{project_id}/export`
* `GET /v1/exports/{export_id}`
* `DELETE /v1/exports/{export_id}`
* `GET /v1/projects/{project_id}/exports`

## Get Job Status [#get-job-status]

```bash title="Terminal"
curl https://blitzreels.com/api/v1/jobs/{job_id} \
  -H "Authorization: Bearer $BLITZREELS_API_KEY"
```

```json title="Response"
{
  "job_id": "job-uuid",
  "type": "export",
  "status": "processing",
  "progress": 45,
  "project_id": "project-uuid",
  "created_at": "2026-02-04T10:00:00Z",
  "completed_at": null,
  "error": null
}
```

## List Jobs for a Project [#list-jobs-for-a-project]

```bash title="Terminal"
curl https://blitzreels.com/api/v1/projects/{project_id}/jobs \
  -H "Authorization: Bearer $BLITZREELS_API_KEY"
```

## Start Export [#start-export]

```bash title="Terminal"
curl -X POST https://blitzreels.com/api/v1/projects/{project_id}/export \
  -H "Authorization: Bearer $BLITZREELS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "resolution": "1080p", "format": "mp4", "cover_frame_seconds": 1 }'
```

Omit `cover_frame_seconds` or pass `null` to use smart automatic thumbnail selection. Smart selection ranks rendered-video candidates: title-card hook, text hook, early visual moment, then generic fallback.

```json title="Response"
{
  "export_id": "export-uuid",
  "job_id": "job-export-uuid",
  "status": "queued"
}
```

## Get Export Status [#get-export-status]

```bash title="Terminal"
curl https://blitzreels.com/api/v1/exports/{export_id} \
  -H "Authorization: Bearer $BLITZREELS_API_KEY"
```

```json title="Response"
{
  "export_id": "export-uuid",
  "status": "complete",
  "download_url": "https://cdn.blitzreels.com/exports/xxx.mp4",
  "thumbnail_url": "https://cdn.blitzreels.com/exports/xxx-thumbnail.jpg",
  "thumbnail": {
    "url": "https://cdn.blitzreels.com/exports/xxx-thumbnail.jpg",
    "frame": 30,
    "frame_seconds": 1,
    "selection_mode": "smart_title_card",
    "rationale": "Opening title-card hook: EMAIL IS YOUR REAL AUDIENCE"
  },
  "platform_metadata": {
    "youtube": {
      "title": "Why an Email List Beats Platform Followers",
      "description": "Why an Email List Beats Platform Followers\n\nOpening title-card hook: EMAIL IS YOUR REAL AUDIENCE",
      "hashtags": ["shorts", "email", "list"]
    }
  },
  "expires_at": "2026-02-05T10:00:00Z",
  "file_size_bytes": 15234567,
  "duration_seconds": 32,
  "container_format": "mp4",
  "resolution": "1080p"
}
```

## Delete Export [#delete-export]

Soft-deletes one export. The file is no longer listed or downloadable.

```bash title="Terminal"
curl -X DELETE https://blitzreels.com/api/v1/exports/{export_id} \
  -H "Authorization: Bearer $BLITZREELS_API_KEY"
```

```json title="Response"
{
  "success": true
}
```

## List Exports for a Project [#list-exports-for-a-project]

```bash title="Terminal"
curl https://blitzreels.com/api/v1/projects/{project_id}/exports \
  -H "Authorization: Bearer $BLITZREELS_API_KEY"
```

## Polling Strategy [#polling-strategy]

* Poll every 3 to 5 seconds for short jobs.
* Back off to 10 to 20 seconds for long jobs.
* Use webhooks for large batch runs.

## Related [#related]

* [Webhooks](/docs/webhooks)
* [Workspace Context](/docs/workspace)
* [API Reference](/docs/reference)
