Developers
REST API
A versioned HTTPS API for software a production company already uses: read its jobs, shoot days and deliverables, and write cuts, review notes and links to footage back, without anyone copying between tools.
Basics
- Base URL:
https://production-engine.com/api/v1 - Every request sends a workspace API token that holds scopes, as
Authorization: Bearer. See Tokens and scopes. - JSON in and out. Keys are snake_case. Enum values are the stored values, never display labels.
- Lists page with a cursor. See Pagination and filters.
- Every error has one shape. See REST errors.
- The token decides the workspace. Another workspace's ids, and deleted records, answer 404.
- Writes create and update projects and deliverables, add link versions and review notes, and link a job to its assets in your system. They run the same code as the app, and each is logged in the project's activity under the token's name.
- A POST can carry an
Idempotency-Key, so a retry never writes twice. See Retries and idempotency. - Money, crew start paperwork and crew contact details are never returned or written.
- An OpenAPI 3.1 description is public at
https://production-engine.com/api/v1/openapi.json.
Your first call
Check the token and read the workspace's time zone:
curl https://production-engine.com/api/v1/me \
-H "Authorization: Bearer $PE_TOKEN"{
"workspace": {
"id": "cmexampletenant001",
"name": "Eastside Pictures",
"time_zone": "America/Los_Angeles"
},
"token": {
"id": "cmexampletoken0001",
"name": "Shade sync",
"scopes": [
"projects:read",
"schedule:read",
"deliverables:read"
],
"expires_at": "2027-09-29T00:00:00.000Z"
}
}Resources
| Resource | Endpoints |
|---|---|
| Workspace | GET /me |
| Projects and links | GET /projects, GET /projects/{id}, GET /projects/{id}/links, POST /projects, PATCH /projects/{id}, POST /projects/{id}/links, PATCH /links/{id}, DELETE /links/{id} |
| Shoot days | GET /projects/{id}/shoot-days, GET /shoot-days/{id} |
| Deliverables, versions and review notes | GET /projects/{id}/deliverables, GET /deliverables/{id}, GET /deliverables/{id}/versions, POST /projects/{id}/deliverables, PATCH /deliverables/{id}, POST /deliverables/{id}/versions, GET /versions/{id}/notes, POST /versions/{id}/notes |
| Clients and contacts | GET /clients, GET /clients/{id}, GET /contacts, GET /contacts/{id} |
| Locations | GET /projects/{id}/locations |
| Crew | GET /projects/{id}/crew |
| Media drives | GET /projects/{id}/media-drives |
| Webhook endpoints | GET /webhook-endpoints, POST /webhook-endpoints, GET /webhook-endpoints/{id}, PATCH /webhook-endpoints/{id}, DELETE /webhook-endpoints/{id}, POST /webhook-endpoints/{id}/test |
REST documentation
- Tokens and scopesMaking a token with scopes and an expiry, sending it, what each scope opens, and the plan and rate limits a token runs under.
- Endpoint referenceEvery REST endpoint with its scope, parameters, body fields, response fields and an example request.
- Pagination and filtersCursor pagination, page size, the status and updated_since filters, and the empty list.
- Dates and time zonesWhich values are calendar dates in the workspace's time zone, which are UTC dates, and which are UTC instants.
- REST errorsThe one error shape, every error code with its HTTP status, request ids, and safe retries with Idempotency-Key.