Skip to content

Report a decision outcome

POST/v1/decisions/{decision_id}/reports

Report 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.

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.

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.

Terminal window
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." }
}'

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.