API Reference ยท External API v1

External API v1

The v1 external API lets integrations manage cases, upload and process documents, review redactions, generate exports, and receive webhook notifications. Every endpoint is authenticated with an API key and limited by the scopes granted to that key.

Cases and documents Create and manage cases, start case workflow actions, upload documents, and download them. Processing and redactions Start scan, OCR, detection, transcription, and summary jobs, then read and review redactions and comments. Exports Request PDF, CSV, JSON, or ZIP exports for a case, track their status, and download the results. Access and reference Inspect the current key, look up redaction types and templates, and manage users, roles, service accounts, and API keys. Webhooks Subscribe endpoints to case, document, export, user, and role events, and inspect or replay deliveries.

Base URL

All v1 endpoints are served under /api/v1 on the RedactStripes API host for your environment. Requests and responses use JSON; send Content-Type: application/json with any request body.

Authentication

Send your API key in the x-api-key header on every request:

curl https://{api-host}/api/v1/me \
  -H "x-api-key: rdx_live_..."

Scopes

Each endpoint lists the scope it requires. A key may call an endpoint only when it holds at least one of the scopes listed for that endpoint. Scopes are granted when a key is created and cannot exceed the max_scopes of its service account.

ScopeGrants
cases:readList and read cases
cases:writeCreate, update, delete, and run workflow actions on cases
documents:readRead documents, list case documents, get download URLs
documents:writeCreate upload sessions, complete uploads, update and delete documents
processing:readRead processing jobs
processing:writeStart scan, OCR, detection, transcription, and summary jobs
redactions:readRead redactions
redactions:writeCreate, update, and delete redactions; submit review decisions
comments:readRead document comments
comments:writeAdd document comments
exports:readList and read exports, get export download URLs
exports:writeCreate, cancel, and retry exports
templates:readRead redaction types, exemptions, and templates
users:readList and read users
users:writeCreate, update, deactivate, and invite users
roles:readList and read roles
roles:writeCreate, update, and delete roles; assign roles to users
credentials:readList service accounts and API keys
credentials:writeCreate, update, and delete service accounts; issue, rotate, and revoke API keys
webhooks:readList and read webhook endpoints and deliveries
webhooks:writeCreate, update, and delete webhook endpoints; rotate secrets; replay deliveries

Requests and responses

Success envelope

Single resources are returned as data. Every response includes a request_id that you can quote when reporting a problem.

{
  "data": { "id": "case_123", "name": "Records request 2026-014" },
  "request_id": "req_01J..."
}

List envelope and pagination

Collections return data as an array and a cursor for the next page. The cursor is null when there are no more results. Use limit (default 25, maximum 100) and pass the returned cursor back as the cursor query parameter.

{
  "data": [ { "id": "case_123" } ],
  "cursor": "eyJpZCI6...",
  "request_id": "req_01J..."
}

Error envelope

{
  "error": {
    "code": "permission_denied",
    "message": "This API key does not have the required scope(s): cases:write"
  },
  "request_id": "req_01J..."
}
HTTP statusCodeMeaning
400validation_errorThe request body or parameters are invalid. Details may appear in error.details.
401authentication_failedThe x-api-key header is missing, malformed, unknown, revoked, or expired.
403permission_deniedThe key lacks the scope the endpoint requires, or its owning account is no longer active.
404resource_not_foundThe resource does not exist in your organization.
409conflict, invalid_transition, idempotency_key_reusedThe resource state does not allow the change, a workflow transition is not allowed, or an idempotency key was reused with a different body.
423lockedThe document layer is locked by another editor. error.locked_layers lists the layers.
429rate_limitedToo many requests. Wait for the number of seconds in the Retry-After header.
500, 503internal_errorAn unexpected error or a temporary outage. Retry with the same Idempotency-Key.

Idempotency

Every POST, PUT, and PATCH request must include an Idempotency-Key header. Use a unique value (a UUID is a good choice) for each logical operation and reuse it when retrying the same request.

Rate limits

LimitWindow
60 requests per raw x-api-key value60 seconds
1,000 requests per API key60 seconds
5,000 requests per organization60 seconds

Related

API reference Back to the API reference index. Redactions API (internal) Request contracts used by the RedactStripes web application.