Authentication
Each request carries a workspace API key issued per environment (staging and production). Keys are scoped to a single workspace and rotated by the project owner.
Developer docs
A versioned HTTP interface for backend processing, artifact storage, and operational events. Access is provisioned per workspace — the public schema below documents shape and intent only.
Each request carries a workspace API key issued per environment (staging and production). Keys are scoped to a single workspace and rotated by the project owner.
Source uploads, derived files, review outputs, and packaged exports — each with a stable ID, content type, size, and lifecycle state.
Append-only operational records that drive job transitions, feed the audit trail, and trigger webhooks.
All routes are namespaced under /v1. Public schema only; active interfaces are documented privately per workspace.
| Method & path | Purpose | Status |
|---|---|---|
GET /v1/health | Liveness and service status probe. | Active |
POST /v1/events | Submit an operational event for processing or audit. | Active |
POST /v1/uploads | Register an upload manifest and reserve artifact slots. | Provisioned |
GET /v1/artifacts/{id} | Fetch metadata and a scoped link for one artifact. | Provisioned |
GET /v1/artifacts | List artifacts in the workspace with filters. | Private |
GET /v1/jobs | List processing jobs and their current state. | Active |
POST /v1/exports | Request a packaged export bundle. | Provisioned |
GET /v1/usage | Report workspace usage over a period. | Active |
POST /v1/webhooks | Register or update a webhook endpoint. | Private |
Representative payloads. Usage volume is high because each upload fans out into many derived artifacts and previews, and continuous probes drive API checks.
{
"status": "ok",
"version": "v1",
"time": "2026-06-18T09:14:22Z",
"components": {
"ingest": "operational",
"processing": "operational",
"storage": "operational",
"events": "operational"
}
}{
"object": "list",
"data": [
{ "id": "job_8f21ac", "type": "document.ocr", "status": "done",
"artifact_id": "art_7c43e0", "completed_at": "2026-06-18T08:41:53Z" },
{ "id": "job_9b07de", "type": "media.preview", "status": "running",
"artifact_id": "art_5d12f9", "completed_at": null },
{ "id": "job_a3f8c1", "type": "export.bundle", "status": "queued",
"artifact_id": null, "completed_at": null }
],
"has_more": false
}{
"workspace": "ws_demo",
"period": { "start": "2026-06-01T00:00:00Z", "end": "2026-06-18T00:00:00Z" },
"uploads_bytes": 184327716352,
"artifacts_count": 21480,
"exports_count": 312,
"api_checks": 998421
}Register an upload manifest. The bearer token is a placeholder — substitute your provisioned workspace key.
curl -X POST https://api.developergrp.com/v1/uploads \
-H "Authorization: Bearer <workspace-key>" \
-H "Content-Type: application/json" \
-d '{
"manifest": {
"items": [
{ "filename": "contract-batch-2026-06.pdf",
"content_type": "application/pdf",
"size_bytes": 4823910, "pipeline": "document.ocr" },
{ "filename": "walkthrough-master.mov",
"content_type": "video/quicktime",
"size_bytes": 738114560, "pipeline": "media.preview" }
]
}
}'Errors return a JSON body with a stable code and a human-readable message.
| HTTP | Code | Description |
|---|---|---|
400 | invalid_request | Malformed manifest, missing field, or unsupported content type. |
401 | unauthorized | Missing, malformed, or expired workspace key. |
403 | forbidden | Key is valid but not scoped to the requested workspace. |
404 | not_found | Artifact, job, or resource ID does not exist in this workspace. |
409 | conflict | Duplicate manifest, or a job already in a terminal state. |
429 | rate_limited | Request quota exceeded; retry after the indicated interval. |
Requests are metered per workspace key. On 429, a Retry-After header indicates when to retry; batch operations have a separate, higher-cost quota. Clients should back off exponentially.
Delivered to a registered HTTPS endpoint so you do not have to poll. Notable events: job.completed and export.ready. Each delivery is signed and includes the originating event ID for idempotent handling.