Publish project media
Publish a project composition to create a shareable link and download the exported file.
Publishes a specific composition from a project, rendering the output as video or audio at the specified resolution. When the job completes successfully the result contains both:
- share_url: a public URL that can be used to view the published content on Descript's share site.
- download_url: a time-limited signed URL to download the exported media file directly, along with download_url_expires_at indicating when the link expires.
Republishing
Publishing the same composition a second time automatically reuses the previous share URL, overwriting its content — so bookmarks and links handed out for the first publish keep working. Republish matching is keyed on (project_id, composition_id, media_type), so a Video publish and an Audio publish of the same composition produce two separate share URLs.
Async Operations
Publish jobs run in the background and return a job_id. Monitor progress via the GET /jobs/{job_id} endpoint, which returns the share_url, download_url, and download_url_expires_at fields once the job finishes.
Dynamic webhook
If callback_url is provided, Descript will POST the job status to that URL when the job completes or fails. The payload will match the format returned by GET /jobs/{job_id}.
Request body
Example request
{
"project_id": "9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb",
"composition_id": "39677a40-1c43-4c36-8449-46cfbc4de2b5",
"callback_url": "https://example.com/webhooks/descript/job_callback"
}Response
Publish job created successfully
Example response
{
"job_id": "6dc3f30a-58c2-4174-96a6-dc18cf3c7776",
"drive_id": "c9c5c47e-158a-49f7-846b-4f6ee2a229a2",
"project_id": "9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb",
"project_url": "https://web.descript.com/9f36ee32-5a2c-47e7-b1a3-94991d3e3ddb"
}