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 temporary contentUrl for 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 tags per extraction and filter the list by them (tags[key]=value); docType is reserved for configured document-type routing.
  • Lifecycle QUEUED -> PROCESSING -> COMPLETED, with terminal FAILED and REJECTED carrying a machine-readable error.
  • GET /document-insights/extractions supports status, time-window, sorting, and tag filters; GET /document-insights/extractions/{extractionId} returns the full typed output and a temporary document contentUrl.
  • Submit field-level corrections with POST /document-insights/extractions/{extractionId}/feedback (returns 201).
  • Delete a terminal extraction with DELETE /document-insights/extractions/{extractionId}; a queued or processing extraction returns 409.

Workflows

  • Trigger Studio-configured workflows with JSON or multipart form-data (POST /workflows/{workflowId}/runs).
  • Monitor runs with GET /workflow-runs and GET /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-time t).
  • 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-level details.
  • 422 VALIDATION_FAILED for semantically invalid bodies, 400 INVALID_REQUEST for malformed requests and bad parameters; every response carries X-Request-Id.