Docs
API reference

Create an upload batch

POST
/api/v1/upload-batches

Queue several uploads in one durable request and track outcomes by your own itemKey. Use this to process an application import without coordinating every admission yourself.

Before you call

Supply 1–20 items, at most 256 KiB JSON, unique itemKey values, and an Idempotency-Key. Only one batch of each kind can be active per workspace.

Required scope: analyses:write.

What happens next

A 202 returns batchId and statusUrl. Items can succeed or fail independently. Each successful item creates a preparation, not an analysis. PUT each file to its item upload URL before quoting analyses.

Recovery

Keep successful resource IDs. Capacity-limited items can wait up to the admission deadline; inspect per-item errorCode. Retry failed items deliberately in a new batch; analysis/interview items need fresh quotes. Foreign or unknown resource IDs reject the envelope.

Follow the complete workflow · Errors and retries

Authorization

ApiKey
headerAuthorizationBearer <token>

Header Parameters

Idempotency-Key*string

Stable key for one logical write. Retry the identical body with the same key after a timeout; a changed body conflicts. 1–128 letters, digits, dots, underscores, colons, or hyphens.

Match^[A-Za-z0-9._:-]+$
Length1 <= length <= 128

Request Body

application/json
  1. body
jobDescription?|

Role context: inline text or a saved job ID on input; selected role fields on a report response.

items*array<>

Page or batch entries. An empty list is valid; use the cursor or individual item states to decide what happens next.

Items1 <= items <= 20

Response Body

A 202 returns batchId and statusUrl. Items can succeed or fail independently. Each successful item creates a preparation, not an analysis. PUT each file to its item upload URL before quoting analyses.

application/json
  1. response
data*
# Set PROBB_URL and PROBB_API_KEY. Replace RESOURCE_ID if present.# Set REQUEST_KEY once for this logical write; reuse it with the same body on retries.curl --fail-with-body -X POST "$PROBB_URL/api/v1/upload-batches" \  -H "Authorization: Bearer $PROBB_API_KEY" \  -H "Idempotency-Key: $REQUEST_KEY" \  -H 'Content-Type: application/json' \  --data-binary '{  "items": [    {      "itemKey": "application-42",      "input": {        "fileName": "resume.pdf",        "fileSize": 1024,        "mimeType": "application/pdf",        "externalReference": {          "source": "my-ats",          "id": "application-42"        },        "jobDescription": {          "kind": "text",          "text": "Build reliable backend services. Required: API development, PostgreSQL, and production incident response."        }      }    }  ]}'
{  "data": {    "batchId": "batch_uploads",    "statusUrl": "/api/v1/upload-batches/batch_uploads"  }}