These steps involve third-party toolsWe make an honest effort to provide workflows for using the Descript API with these external tools, but your mileage may vary. If you run into issues using the Descript API with tools like Zapier and n8n, please contact the relevant support team for assistance.
Before getting started
You’ll need three things:- A Descript API token (create one here)
- A Zapier account
- The Descript API documentation open for reference
Step 1: Set up the connection
- In your Zap, add a new action step.
- Search for API by Zapier and select it. Note: this is a premium feature, and may not be available on all Zapier plans.
- Choose API Request as the action event.
- Click Connect a new account. A configuration window opens.
- Fill in the fields in the table below.
- Click Yes, Continue to API by Zapier.
Step 2: Find the endpoint you need
Open the API documentation and find the endpoint you want to use. Each endpoint page lists the three things you’ll enter in Zapier:- The HTTP method —
POST,GET, orDELETE. Look for the label next to the endpoint name (for example, “post Export project transcript”). - The URL — shown at each endpoint section, for example
https://descriptapi.com/v1/export/transcript.
- The request body — the JSON payload the endpoint expects. The docs list every field, whether it’s required or optional, and what values it accepts.
Step 3: Configure the API Request action
Depending on the endpoint you’re calling, you will need to specify a given set of inputs and values. Back in Zapier, fill in the action fields:- Set the HTTP Method to match the docs (usually POST).
- Paste the full URL from the docs.
- In the Body fields, enter your JSON payload. Reference data from earlier Zap steps using Zapier’s
{{field}}syntax — for example, passing a project ID from an earlier Import Media step.
Example: Export a transcript
Example: Export a transcript
To export a transcript as a text file with speaker labels and paragraph timecodes:HTTP Method: POSTURL:
https://descriptapi.com/v1/export/transcriptBody:{ "project_id": "{{project_id_from_previous_step}}", "format": "txt", "include_speaker_labels": "changes", "include_markers": true, "timecodes": { "on_paragraphs": true } }The format field accepts: txt, markdown, html, rtf, or docx.Response formats: sync vs. async
The built-in Descript Zapier actions handle polling and response parsing for you. When calling API Request directly, two patterns matter: Async endpoints (like Publish) return ajob_id in JSON. You’ll need a follow-up step to poll GET https://descriptapi.com/v1/jobs/{{job_id}} until the job completes, or pass a callback_url in your request body to have Descript notify a Zapier webhook when the job finishes.
Sync endpoints (like Transcript Export) return the file content directly — not JSON. Zapier’s API Request action expects JSON responses, so these may not parse cleanly. If you run into issues, try using a text-based format (like txt or markdown for transcripts) instead of binary formats (like docx), or handle the request in a Code by Zapier step where you have more control over the response.
Available endpoints and examples
For the full list of endpoints, request schemas, and code samples, see the API documentation. Endpoints not covered by the built-in Zapier integration include:- Export transcript — export a composition’s transcript as text, Markdown, HTML, RTF, or DOCX
- List projects — search and filter projects in your drive
- Get project details — inspect a project’s media files and compositions
Examples
One example per endpoint, showing all available parameters with realistic values. All examples usePOST or GET/DELETE as appropriate.
Import media and sequences
Import media and sequences
Method: POST URL:
https://descriptapi.com/v1/jobs/import/project_mediaBody:Agent edit
Agent edit
Method: POST URL:
https://descriptapi.com/v1/jobs/agentBody:conversation_id continues a prior agent conversation. Omit it to start fresh. project_name can be used instead of project_id to create a new project from scratch.Publish project media
Publish project media
Method: POST URL:
https://descriptapi.com/v1/jobs/publishBody:access_level options: public, unlisted, drive, private. Defaults to the drive setting. resolution only applies when media_type is Video.Export project transcript
Export project transcript
Method: POST URL:
https://descriptapi.com/v1/export/transcriptBody:format options: txt, markdown, html, rtf, docx. include_speaker_labels options: off, changes, every_paragraph. Response is the raw file content, not JSON — see the note on sync endpoints above.List jobs
List jobs
Method: GET URL:
https://descriptapi.com/v1/jobs?Query params: project_id, type (import/project_media or agent), limit (1–100, default 20), created_after, created_before (ISO 8601). Use cursor from pagination.next_cursor to paginate.Get job status
Get job status
Method: GET URL:
https://descriptapi.com/v1/jobs/6dc3f30a-58c2-4174-96a6-dc18cf3c7776No body. Replace the job ID in the path with the job_id from any async job response (import, agent, publish).Cancel job
Cancel job
Method: DELETE URL:
https://descriptapi.com/v1/jobs/6dc3f30a-58c2-4174-96a6-dc18cf3c7776No body. Returns 204 on success. Irreversible — confirm the job ID before calling.List projects
List projects
Method: GET URL:
https://descriptapi.com/v1/projects?All params are optional query strings. created_by accepts a user UUID or me. sort options: name, created_at, updated_at, last_viewed_at. Use cursor from pagination.next_cursor to paginate.Get project details
Get project details
Method: GET URL:
https://descriptapi.com/v1/projects/YOUR_PROJECT_IDNo body. Returns project metadata, all media files with type and duration, and all compositions with ID, name, duration, and media type. Note: this will only work with projects within the drive your API token is associated with.Check API status
Check API status
Method: GET URL:
https://descriptapi.com/v1/statusNo body. Returns { "status": "ok" } if the token is valid. Note: this endpoint is marked as work in progress in the current docs and may return an error.
