Skip to main content
POST

Authorizations

Authorization
string
header
required

Personal API token created in Descript Settings → API Tokens. See the Authentication section for details.

Body

application/json

AI agent request

Request to run Agent edit. The agent will interpret the prompt and either edit an existing project or create a new one. You must provide exactly one of project_id or project_name.

prompt
string
required

Natural language instruction for the agent to execute. Examples: "add studio sound to every clip", "remove all filler words", "create a 30-second highlight reel"

Example:

"add studio sound to every clip"

project_id
string<uuid>

The ID of an existing project to edit. Mutually exclusive with project_name.

Example:

"9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb"

project_name
string

Name for creating a new project. Mutually exclusive with project_id.

Example:

"My New Project"

composition_id
string

Composition to target within the project. When provided, the agent will focus its edits on this specific composition rather than choosing one automatically. Only valid when project_id is also provided. Requires project_id.

Accepts any of the following formats:

  • A full composition UUID (e.g. 39677a40-1c43-4c36-8449-46cfbc4de2b5)
  • A 5-character short ID from a Descript URL (e.g. 39677)
  • A full Descript project URL (e.g. https://web.descript.com/{project_id}/39677)
Example:

"39677a40-1c43-4c36-8449-46cfbc4de2b5"

model
string

AI model to use for editing. Accepts a canonical model id (e.g. claude-opus-4.8) or a friendly alias that tracks the stable version of a family (e.g. claude-opus). Call GET /agent/models for the current set of supported models and aliases.

Defaults to auto when omitted, which selects a recommended model for your account.

team_access
enum<string>

Access level for team members when creating a new project. Only applicable when project_name is provided (not when using project_id). Defaults to none if not specified.

Available options:
edit,
comment,
view,
none
callback_url
string<uri>

Optional webhook URL to call when the job completes or fails. Descript will POST the job status (same format as GET /jobs/{job_id}) to this URL.

Example:

"https://example.com/webhooks/descript/job_callback"

Response

Agent edit job created successfully

job_id
string<uuid>
required

Unique identifier for the Agent edit job

Example:

"6dc3f30a-58c2-4174-96a6-dc18cf3c7776"

drive_id
string<uuid>
required

Drive ID where the project is located

Example:

"c9c5c47e-158a-49f7-846b-4f6ee2a229a2"

project_id
string<uuid>
required

The project ID (existing or newly created)

Example:

"9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb"

project_url
string<uri>
required

URL to access the project in Descript web app

Example:

"https://web.descript.com/9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb"

conversation_id
string<uuid>
required

Conversation ID for this agent run. Always returned on POST — no need to wait for the job to complete to learn the id. Pass it back as conversation_id on a subsequent call to continue this conversation.

Example:

"a1b2c3d4-e5f6-7890-abcd-ef1234567890"

resolved_model
string
required

Model reported for this request: the canonical id for an explicit model or alias (e.g. claude-opus-4.8 for claude-opus), or auto for an auto request. Lets you confirm the selection immediately, without waiting for the job result. Matches result.resolved_model on GET /jobs/{job_id}.

Example:

"claude-opus-4.8"

drive_name
string | null

Human-readable name of the connected drive (workspace)

Example:

"My Team Workspace"