Report a decision outcome
/v1/decisions/{decision_id}/reportsReport what your integration knows about execution after a plain decision request. A report records evidence; it does not grant permission, resolve approval, or change the original policy effect.
Choose an outcome
Section titled “Choose an outcome”| Outcome | Use when |
|---|---|
SUCCESS |
You have confirmed the operation completed. |
FAILURE |
You know it did not complete, including a confirmed failure before dispatch. |
CANCELLED |
Execution was interrupted or cancelled without a definitive completion result. |
UNKNOWN |
You cannot establish what happened. |
Do not infer Failure from a timeout. The provider may have acted before the connection failed. A blocked operation that was never dispatched does not need an execution report.
Request fields
Section titled “Request fields”| Field | Required | Description |
|---|---|---|
idempotency_key |
Yes | Stable identity for this report. |
outcome |
Yes | One of the outcomes above. |
agent.id |
Yes | The original agent ID from connection setup. |
action |
Yes | The exact original action type and attributes. |
decision_id |
No | If supplied, must match the URL. |
occurred_at |
No | RFC 3339 occurrence time; defaults to receipt time. |
context |
No | Relevant additional context. |
details |
No | A concise summary and supporting metadata. |
The SDK supplies the bound agent ID. For HTTP, replace the example agent ID with your actual configured ID.
curl --request POST "https://app.actera.dev/v1/decisions/$DECISION_ID/reports" \ --header "Authorization: Bearer $ACTERA_API_KEY" \ --header 'Content-Type: application/json' \ --data '{ "idempotency_key": "refund-request-01842:success", "outcome": "SUCCESS", "agent": { "id": "agent-from-connection-setup" }, "action": { "type": "refund.create", "attributes": { "amount_minor": 8000, "currency": "GBP", "customer_id": "cus_123" } }, "details": { "summary": "Refund completion confirmed by the provider." } }'Delivery and usage
Section titled “Delivery and usage”Returns 201 Created with the report. Retry delivery with the same key and body. Changed input under the same key returns 409. A later outcome uses a new report key. Retry the report without executing the provider operation again.
For ordinary requests, the first success counts completed usage once. A definitive failure releases pending capacity. Missing, Cancelled, and Unknown outcomes can continue to hold capacity until a definitive report arrives. Later uncertainty or failure does not subtract an already confirmed success.
Reports can record execution after a Block, including in Monitoring. This remains visible as evidence of what the host reported; it does not turn the Block into authorization.
Managed calls use their separate SDK execution-reporting flow. An independent decision report cannot settle a managed attempt. See MCP continuation and Usage limits.
