---
title: "Create a saved Project and start a bounded hosted draft"
method: POST
path: "/drafts/runs"
tags: ["Platform"]
---

# Create a saved Project and start a bounded hosted draft

`POST /drafts/runs`

## Request

- Base URL: `https://blitzreels.com/api/v1`
- URL: `https://blitzreels.com/api/v1/drafts/runs`
- Auth: API key in header `Authorization`

Create a saved Project and start a bounded hosted draft.

## Request body

- object
  - `name` string, required
  - `brief` string, required
  - `format` 'video' | 'carousel', required
  - `language` 'en' | 'fr', required
  - `seriesId` string, uuid, nullable, required
  - `idempotencyKey` string, required
  - `maximumAgentUsd` number, required

## Response `200`

Successful response

- object
  - `run` object, required
    - `runId` string, uuid, required
    - `workflowId` string, uuid, required
    - `projectId` string, uuid, nullable, required
    - `name` string, required
    - `brief` string, required
    - `format` 'video' | 'carousel', required
    - `language` 'en' | 'fr', required
    - `status` 'pending' | 'running' | 'completed' | 'failed' | 'cancelled', required
    - `stepStatus` 'pending' | 'running' | 'completed' | 'failed' | 'skipped', required
    - `triggerRunId` string, nullable, required
    - `cancellationPending` boolean, required
    - `createdAt` string, date-time, required
    - `completedAt` string, date-time, nullable, required
    - `progress` object, nullable, required
      - `version` 1, required
      - `revision` integer, required
      - `projectId` string, uuid, required
      - `phase` 'planning' | 'tools' | 'waiting' | 'review' | 'complete', required
      - `modelCalls` integer, required
      - `maxModelCalls` integer, required
      - `repairRounds` integer, required
      - `maxRepairRounds` integer, required
      - `seenVisualRevision` integer, nullable, required
      - `completed` object, nullable, required
        - `draftId` string, required
        - `exportId` string, uuid, required
        - `projectRevision` integer, required
      - `calls` object[], required
        - `id` string, required
        - `name` string, required
        - `attempts` integer, required
        - `projectRevision` integer, nullable, required
        - `status` 'pending' | 'failed' | 'completed', required
        - `error` string, nullable, required
      - `totalCalls` integer, required
    - `error` string, nullable, required
    - `costs` object, required
      - `currency` 'USD', required
      - `maximumAgentUsd` number, required
      - `recordedModelUsd` number, nullable, required
      - `unknownModelEvents` integer, required
      - `excludesChildJobs` true, required
      - `usage` object, nullable, required
        - `scope` 'attributed_jobs', required
        - `accountedUsd` number, required
        - `reservedUsd` number, required
        - `providerReportedUsd` number, required
        - `allocatedUpperBoundUsd` number, required
        - `unresolvedJobs` integer, required
        - `activeJobs` integer, required
        - `jobCount` integer, required
  - `mutationReceipt` object, required
    - `id` string, nullable, required
    - `key` string, nullable, required
    - `operation` string, required
    - `status` 'completed', required
    - `replayed` boolean, required

## Other responses

- `400`: Invalid input data
- `401`: Authorization not provided
- `403`: Insufficient access
- `500`: Internal server error

## Changes

- **2026-10-19** `35608b12471d`: 1 info
  - added the required property `run/costs/usage` to the response with the `200` status

[Operation history](https://skmtc.dev/blitzreels/apis/blitzreels-api/changes/drafts/runs/post.md)

---

[API](https://skmtc.dev/blitzreels/apis/blitzreels-api.md) · [All operations](https://skmtc.dev/blitzreels/apis/blitzreels-api/llms.txt) · [OpenAPI document](https://skmtc.dev/blitzreels/apis/blitzreels-api/revisions/35608b12471d?raw)
