Errors
The Wo returns errors using a consistent public JSON envelope.Standard error shape
requestId identifies the HTTP request.
Keep it when reporting an integration problem.
Error details
Some errors may include safe structured metadata:Public errors
400 — Invalid payload
An HTTP-valid JSON document that does not match the endpoint schema returns:context values and invalid public request shapes.
Malformed JSON is represented separately:
401 — Authentication
Missing API key:403 — Billable operation unavailable
403 — Current usage unavailable for customer
Current usage visibility uses a separate access error from billable operation execution:403 — Product not entitled
A valid API key identifies the customer, but it does not by itself grant access to Operational Evidence. If the authenticated customer is not currently entitled to execute theevidence_report operation, the API returns:
409 — Idempotency conflict or operation in progress
Reusing the sameIdempotency-Key for a different normalized request returns:
idempotency_conflict with the same key and a different request.
For idempotency_in_progress, wait until the original request has finished
before deciding whether another retry is appropriate.
422 — Application input rejected
422 — Remote evidence image rejected
When a submitted image URL cannot be accepted through the secure remote-resource boundary, the API returns:429 — Quota exceeded
resetAt to understand when the next monthly quota period begins.
429 — Rate limit exceeded
Rate limiting protects API capacity and is separate from monthly quota. When the configured technical request rate is exceeded:rate_limit_exceeded as commercial quota exhaustion.
503 — Entitlement check unavailable
If The Wo cannot safely evaluate Operational Evidence product entitlement, the create operation fails closed:requestId when reporting a persistent problem.
503 — Rate limiting unavailable
If the platform cannot safely evaluate the configured technical rate limit, it returns:502 — Generation failure
An invalid generated report:503 — Idempotency unavailable
If idempotency protection cannot be established safely, the API returns:503 — Current usage unavailable
If the API cannot safely read current usage information, it returns:used: 0.
Retry cautiously and preserve the requestId if the problem persists.
503 — Remote evidence image unavailable
When a remote image cannot currently be retrieved safely because the remote resource or retrieval dependency is temporarily unavailable, the API returns:requestId when reporting a
persistent failure.
503 — Provider unavailable
A temporarily unavailable report generation service returns:503 may also represent another required service being unavailable.
Always inspect error.code; do not branch only on the HTTP status.
500 — Unexpected error
Unexpected failures use:requestId when reporting the problem.
Retry guidance
Do not automatically retry every failed request. A practical policy is:Idempotency retry contract
POST /v1/evidence/reports supports safe retries through the optional
Idempotency-Key header.
For the same customer, product, operation, idempotency key, and normalized
request, a retry returns the original successful Evidence Report result without
retrieving remote images again, creating another report, invoking the provider
again, or recording another usage unit.
Requests without Idempotency-Key remain supported but do not receive this
safe-retry guarantee.
See Report contract for the
complete idempotency behavior.