Jobs

Submit a job

POST/jobs

Queue a long-running job scoped to the linked user + usergroup. The type must be one of the externally-submittable job types; params must carry the resource ref the job operates on plus any per-type options. All usergroup, feature-flag, file-type and permission checks are the same as the in-app path. Requires the write scope.

Supports the Idempotency-Key header: a retry with the same key + body within 24h replays the original response (Idempotent-Replayed: true) instead of queuing a second job. Reusing a key with a different body returns 422 IDEMPOTENCY_KEY_CONFLICT.

X-Api-Key<token>

Issued to you when your integration is provisioned. Determines which catalogue resources are visible and which AI tools are available.

In: header

Header Parameters

Idempotency-Key?string

Printable-ASCII token that makes a retried submit safe.

Lengthlength <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/jobs" \  -H "Content-Type: application/json" \  -d '{    "type": "proofreading",    "params": {      "resource": 101,      "name": "Copyedit pass",      "ai_comments": true    }  }'
{  "data": {    "jobRef": 555,    "type": "proofreading",    "status": {      "code": 1,      "label": "ready"    }  }}
{  "success": false,  "status": "fail",  "message": "string",  "error": {    "message": "API key is required",    "code": "NO_API_KEY"  }}

{  "success": false,  "status": "fail",  "message": "API key is required",  "error": {    "code": "NO_API_KEY",    "message": "API key is required"  }}

{  "success": false,  "status": "fail",  "message": "This API key does not have the 'write' scope",  "error": {    "code": "INSUFFICIENT_SCOPE",    "message": "This API key does not have the 'write' scope"  }}

{  "success": false,  "status": "fail",  "message": "Idempotency-Key was reused with a different request body",  "error": {    "code": "IDEMPOTENCY_KEY_CONFLICT",    "message": "Idempotency-Key was reused with a different request body"  }}