Plextera Public API v1
The first version of the Plextera Public API: document processing, workflow automation, and webhook notifications behind one API key.
Files
- Upload documents up to 50 MB (
POST /files): PDF, JPEG, PNG, TIFF, WebP, DOCX, XLSX, PPTX, plain text, CSV, HTML, archives, audio, and video. Executable and script files are rejected. GET /files/{fileId}returns metadata including a temporarycontentUrlfor downloading the content directly.- Reference one uploaded file from any number of extractions and workflow runs.
Document Insights
- Submit documents for structured field extraction by
fileId, HTTPS URL, or direct multipart upload. - Attach up to 50 string
tagsper extraction and filter the list by them (tags[key]=value);docTypeis reserved for configured document-type routing. - Lifecycle
QUEUED -> PROCESSING -> COMPLETED, with terminalFAILEDandREJECTEDcarrying a machine-readableerror. GET /document-insights/extractionssupports status, time-window, sorting, and tag filters;GET /document-insights/extractions/{extractionId}returns the full typedoutputand a temporary documentcontentUrl.- Submit field-level corrections with
POST /document-insights/extractions/{extractionId}/feedback(returns201). - Delete a terminal extraction with
DELETE /document-insights/extractions/{extractionId}; a queued or processing extraction returns409.
Workflows
- Trigger Studio-configured workflows with JSON or multipart form-data (
POST /workflows/{workflowId}/runs). - Monitor runs with
GET /workflow-runsandGET /workflow-runs/{runId}, including step-level output and nested runs.
Event Subscriptions
- HTTPS webhooks for extraction and workflow run terminal states, signed with HMAC-SHA256 (
X-Plextera-Signature, send-timet). - Deliveries retry up to 6 times with exponential backoff; pausing, deleting, or rotating the secret applies to queued deliveries immediately.
- Inspect delivery history per subscription with
GET /event-subscriptions/{subscriptionId}/deliveries(status, attempts, last response code, next retry).
Error model
- One envelope on every error:
error.code,error.message,error.requestId,error.retryable, and field-leveldetails. 422 VALIDATION_FAILEDfor semantically invalid bodies,400 INVALID_REQUESTfor malformed requests and bad parameters; every response carriesX-Request-Id.