Getting started
Quickstart
Create your first readable receipt with one HTTP request from a workflow, script, cron job, or internal tool.
Send summaries first
Start with safe example data and short summaries. Do not send full customer messages, private documents, secrets, API keys, or sensitive data unless you have a clear reason to store them.
Prerequisites
Access and an API key
Docs are public so you can review the flow before requesting access. After your account is active, create an API key in the app.
Request accessA workflow that can send JSON
Use n8n, Make, IFTTT, StackAI, Zapier, a custom script, a cron job, or an internal tool. Automation Receipts only needs an authenticated JSON request.
1. Create a run
A run is one workflow execution. The API key chooses the workspace, and the payload describes what happened.
- Method
POST- URL
https://automationreceipts.com/api/v1/runs- Header
Authorization: Bearer aar_live_...- Required
automation_name,run_uid, and at least one summary field.
2. Send a JSON payload
This example logs a support reply draft that needs review. Replace the example values with dynamic values from your workflow when you are ready.
Create receipt request
curl -X POST "https://automationreceipts.com/api/v1/runs" \
-H "Authorization: Bearer aar_live_REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{
"automation_name": "Support Reply Drafter",
"run_uid": "support-demo-20260517-1042",
"source_type": "n8n",
"trigger_type": "new_support_email",
"status": "needs_review",
"risk_level": "medium",
"input_summary": "Customer asked about refund options.",
"output_summary": "AI drafted a polite refund-policy reply.",
"model_used": "gpt-5.5",
"approval_required": true,
"approval_status": "pending",
"final_action": "Draft created but not sent.",
"events": [
{
"event_type": "trigger_received",
"event_label": "Support email received",
"event_summary": "A new support email triggered the workflow."
},
{
"event_type": "model_called",
"event_label": "Draft generated",
"event_summary": "The workflow generated a suggested reply."
},
{
"event_type": "approval_requested",
"event_label": "Review requested",
"event_summary": "The draft is waiting for review."
}
]
}'
Send booleans as real JSON booleans
Send false as false, not "false". The string "false" may be treated as truthy by the API and can make approval look required.
Optional review callback
If the original workflow should receive the review result later, add a callback_url to the create-run payload. Automation Receipts saves the review first, then POSTs a small review result payload to that URL. Callback failure does not undo the saved review.
3. Open the receipt
A successful create-run request returns HTTP 201. The receipt_url is the human-readable receipt page you can open in a browser or share with a teammate.
Create receipt response
201 Created{
"ok": true,
"run_id": 123,
"run_uid": "n8n-first-receipt-456",
"receipt_url": "https://automationreceipts.com/runs/123"
}
4. Append events later
Use events when the workflow continues after the first receipt is created. The append-event URL uses run_uid, not the numeric run_id: /api/v1/runs/{run_uid}/events.
Append event request
curl -X POST "https://automationreceipts.com/api/v1/runs/support-demo-20260517-1042/events" \
-H "Authorization: Bearer aar_live_REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{
"event_type": "action_taken",
"event_label": "Reply sent",
"event_summary": "The approved support reply was sent to the customer.",
"occurred_at": "2026-05-17T10:45:00+12:00"
}'
Successful append-event requests return:
Append event response
200 OK{
"ok": true,
"message": "Event logged."
}
Useful notes
Events stay readable
Unknown event_type values are recorded as note. Missing event_label can be generated from event_type, but documented event types create clearer timelines.
Keep payloads focused
Request bodies over 131072 bytes are rejected. The events array on create-run is capped to 50 items.
Common responses
| Status | Meaning |
|---|---|
400 | A valid JSON object is required. |
401 | The bearer token is missing or invalid. |
404 | The run was not found when appending an event. |
409 | The run_uid already exists in the workspace. |
413 | The request payload is too large. |
422 | A required field is missing or a value did not validate. |