Autopilot
| Operation | Summary | Scope | Idempotency-Key |
|---|---|---|---|
GET /v1/autopilot/passes/{pass_id} |
Get an Autopilot pass | read |
|
POST /v1/autopilot/questions/{question_id}/answer |
Answer a question of Autopilot | draft |
required |
GET /v1/entities/{entity}/autopilot |
Get what Autopilot keeps and what waits for a person | read |
|
GET /v1/entities/{entity}/autopilot/passes |
List Autopilot's passes | read |
|
PUT /v1/entities/{entity}/autopilot/{outcome} |
Switch an outcome of Autopilot on or off | draft |
|
POST /v1/entities/{entity}/autopilot/{outcome}/passes |
Run a pass of an outcome now | draft |
|
POST /v1/entities/{entity}/autopilot/{outcome}/passes/stream |
Run a pass of an outcome now, with its progress | draft |
GET /v1/autopilot/passes/{pass_id}
Get an Autopilot pass
What the pass did step by step: what was open, what the rules settled, each item the AI worked on with the tools it called and whether the outcome's check found it settled, what it asked, and the steps it left a person.
| Required scope | read (admin implies every scope) |
| Operation id | get_autopilot_pass_v1_autopilot_passes__pass_id__get |
Parameters
| In | Name | Type | Required | Description |
|---|---|---|---|---|
| path | pass_id |
string (uuid) | yes | Id (uuid) of the pass. |
Example request
curl "$ERP_URL/v1/autopilot/passes/{pass_id}" \
-H "Authorization: Bearer $ERP_KEY"
Responses
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | PassOut |
| 401 | Missing or invalid API key (unauthorized). |
ErrorEnvelope |
| 403 | The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). |
ErrorEnvelope |
| 404 | The resource does not exist, or belongs to another organization (not_found). |
ErrorEnvelope |
| 422 | Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. |
HTTPValidationError |
Example response (shape)
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"entity": "string",
"outcome": "string",
"trigger": "daily",
"reason": "string",
"acting_for": "string",
"run_on": "2026-09-21",
"status": "done",
"open_before": 1,
"open_after": 1,
"by_rules": 1,
"by_ai": 1,
"ai_items": 1,
"log": [
{
"step": "check",
"text": "string",
"count": 1,
"kind": "string",
"item": "string",
"tools": [
null
],
"settled": true
}
],
"handoffs": [
{
"kind": "string",
"title": "string",
"path": "string",
"ref": "string",
"count": 1,
"due": "2026-09-21"
}
],
"questions": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"outcome": "string",
"item_ref": "string",
"item_title": "string",
"question": "string",
"status": "answered",
"answer": "string",
"answered_by": "string",
"answered_at": "2026-09-21T09:30:00Z",
"created_at": "2026-09-21T09:30:00Z",
"pass_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
],
"model": "string",
"error": "string",
"started_at": "2026-09-21T09:30:00Z",
"finished_at": "2026-09-21T09:30:00Z"
}
POST /v1/autopilot/questions/{question_id}/answer
Answer a question of Autopilot
The answer goes to the AI with the item in the next pass, which comes soon. 409
autopilot_question_closed for a question already answered or dropped. Needs an
Idempotency-Key.
| Required scope | draft (admin implies every scope) |
| Idempotency-Key | required |
| Operation id | answer_autopilot_question_v1_autopilot_questions__question_id__answer_post |
Parameters
| In | Name | Type | Required | Description |
|---|---|---|---|---|
| path | question_id |
string (uuid) | yes | Id (uuid) of the question. |
Request body
application/json (required): AnswerInput
| Field | Type | Required | Description |
|---|---|---|---|
answer |
string | yes | The person's answer. (min length 1; max length 2000) |
Example request
curl -X POST "$ERP_URL/v1/autopilot/questions/{question_id}/answer" \
-H "Authorization: Bearer $ERP_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"answer": "A deposit from Zürich Kunde AG for order 17."
}'
Responses
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | QuestionOut |
| 401 | Missing or invalid API key (unauthorized). |
ErrorEnvelope |
| 403 | The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). |
ErrorEnvelope |
| 404 | The resource does not exist, or belongs to another organization (not_found). |
ErrorEnvelope |
| 409 | The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). |
ErrorEnvelope |
| 422 | Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. |
HTTPValidationError |
Example response (shape)
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"outcome": "string",
"item_ref": "string",
"item_title": "string",
"question": "string",
"status": "answered",
"answer": "string",
"answered_by": "string",
"answered_at": "2026-09-21T09:30:00Z",
"created_at": "2026-09-21T09:30:00Z",
"pass_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
GET /v1/entities/{entity}/autopilot
Get what Autopilot keeps and what waits for a person
Every outcome Autopilot can keep for the company: whether it is on and for whom, its state
after the latest pass (on_track, open, waiting for a person, problem), the items still
open and the steps that pass left a person, each with its place in the app; the open
questions the AI asked; and how much of the day's AI budget is used.
| Required scope | read (admin implies every scope) |
| Operation id | get_autopilot_v1_entities__entity__autopilot_get |
Parameters
| In | Name | Type | Required | Description |
|---|---|---|---|---|
| path | entity |
string | yes | Entity code, e.g. CH01 (GET /v1/entities). |
Example request
curl "$ERP_URL/v1/entities/CH01/autopilot" \
-H "Authorization: Bearer $ERP_KEY"
Responses
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | AutopilotOut |
| 401 | Missing or invalid API key (unauthorized). |
ErrorEnvelope |
| 403 | The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). |
ErrorEnvelope |
| 404 | The resource does not exist, or belongs to another organization (not_found). |
ErrorEnvelope |
| 422 | Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. |
HTTPValidationError |
Example response (shape)
{
"entity": "string",
"today": "2026-09-21",
"ai_budget": 1,
"ai_used": 1,
"outcomes": [
{
"key": "string",
"area": "string",
"title": "string",
"test": "string",
"events": [
"string"
],
"enabled": true,
"acting_for": "string",
"language": "de",
"options": {},
"due": true,
"state": "off",
"open": 1,
"last_pass": null,
"handoffs": [
null
]
}
],
"questions": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"outcome": "string",
"item_ref": "string",
"item_title": "string",
"question": "string",
"status": "answered",
"answer": "string",
"answered_by": "string",
"answered_at": "2026-09-21T09:30:00Z",
"created_at": "2026-09-21T09:30:00Z",
"pass_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
]
}
GET /v1/entities/{entity}/autopilot/passes
List Autopilot's passes
The company's passes, newest first: what started each, for whom it acted, what was open before and after, and how much the rules and the AI settled.
| Required scope | read (admin implies every scope) |
| Operation id | list_autopilot_passes_v1_entities__entity__autopilot_passes_get |
Parameters
| In | Name | Type | Required | Description |
|---|---|---|---|---|
| path | entity |
string | yes | Entity code, e.g. CH01 (GET /v1/entities). |
| query | outcome |
string or null | Only this outcome's, e.g. bank_matched. |
|
| query | limit |
integer | At most this many, newest first. (min 1; max 200; default 50) |
Example request
curl "$ERP_URL/v1/entities/CH01/autopilot/passes" \
-H "Authorization: Bearer $ERP_KEY"
Responses
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | array of PassSummary |
| 401 | Missing or invalid API key (unauthorized). |
ErrorEnvelope |
| 403 | The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). |
ErrorEnvelope |
| 404 | The resource does not exist, or belongs to another organization (not_found). |
ErrorEnvelope |
| 422 | Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. |
HTTPValidationError |
Example response (shape)
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"outcome": "string",
"trigger": "daily",
"reason": "string",
"acting_for": "string",
"status": "done",
"open_before": 1,
"open_after": 1,
"by_rules": 1,
"by_ai": 1,
"ai_items": 1,
"error": "string",
"started_at": "2026-09-21T09:30:00Z",
"finished_at": "2026-09-21T09:30:00Z"
}
]
PUT /v1/entities/{entity}/autopilot/{outcome}
Switch an outcome of Autopilot on or off
Switched on, Autopilot keeps the outcome true: a pass when something happens that gives it
work (a statement imported), once a day, and the first one at once. Its passes act for the
person who switched it on (only a person signed in can: 403 autopilot_needs_a_person), so
four eyes count what they book as that person's: a second person approves it. They never
approve, close periods, send, pay or file.
| Required scope | draft (admin implies every scope) |
| Idempotency-Key | not used |
| Operation id | put_autopilot_outcome_v1_entities__entity__autopilot__outcome__put |
Parameters
| In | Name | Type | Required | Description |
|---|---|---|---|---|
| path | entity |
string | yes | Entity code, e.g. CH01 (GET /v1/entities). |
| path | outcome |
string | yes | The outcome, e.g. bank_matched. |
Request body
application/json (required): OutcomeSettingInput
| Field | Type | Required | Description |
|---|---|---|---|
enabled |
boolean | yes | Switch Autopilot on or off for this outcome. |
language |
"de" | "en" | "fr" | "it" | "sv" |
The language of its notes and questions. (default "en") |
|
options |
object | Its settings: vendors_paid takes days_before_due (pay a bill this many days before it is due, 0 to 30, default 2); the others take none. |
Example request
curl -X PUT "$ERP_URL/v1/entities/CH01/autopilot/bank_matched" \
-H "Authorization: Bearer $ERP_KEY" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"language": "en"
}'
Responses
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | OutcomeOut |
| 401 | Missing or invalid API key (unauthorized). |
ErrorEnvelope |
| 403 | The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). |
ErrorEnvelope |
| 404 | The resource does not exist, or belongs to another organization (not_found). |
ErrorEnvelope |
| 409 | The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). |
ErrorEnvelope |
| 422 | Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. |
HTTPValidationError |
Example response (shape)
{
"key": "string",
"area": "string",
"title": "string",
"test": "string",
"events": [
"string"
],
"enabled": true,
"acting_for": "string",
"language": "de",
"options": {},
"due": true,
"state": "off",
"open": 1,
"last_pass": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"outcome": "string",
"trigger": "daily",
"reason": "string",
"acting_for": "string",
"status": "done",
"open_before": 1,
"open_after": 1,
"by_rules": 1,
"by_ai": 1,
"ai_items": 1,
"error": "string",
"started_at": "2026-09-21T09:30:00Z",
"finished_at": "2026-09-21T09:30:00Z"
},
"handoffs": [
{
"kind": "string",
"title": "string",
"path": "string",
"ref": "string",
"count": 1,
"due": "2026-09-21"
}
]
}
POST /v1/entities/{entity}/autopilot/{outcome}/passes
Run a pass of an outcome now
Run now: check what is open, let the rules settle what they can, give the AI the items
left (within the day's budget), check again, and record the pass with the steps left to a
person. The pass acts for the caller. 409 autopilot_pass_running while one runs. Works
whether or not the outcome is switched on.
| Required scope | draft (admin implies every scope) |
| Idempotency-Key | not used |
| Operation id | run_autopilot_pass_v1_entities__entity__autopilot__outcome__passes_post |
Parameters
| In | Name | Type | Required | Description |
|---|---|---|---|---|
| path | entity |
string | yes | Entity code, e.g. CH01 (GET /v1/entities). |
| path | outcome |
string | yes | The outcome, e.g. bank_matched. |
Request body
application/json (required): PassInput
| Field | Type | Required | Description |
|---|---|---|---|
language |
"de" | "en" | "fr" | "it" | "sv" |
The language of this pass's notes and questions. (default "en") |
Example request
curl -X POST "$ERP_URL/v1/entities/CH01/autopilot/bank_matched/passes" \
-H "Authorization: Bearer $ERP_KEY" \
-H "Content-Type: application/json" \
-d '{
"language": "en"
}'
Responses
| Status | Meaning | Body |
|---|---|---|
| 201 | Created | PassOut |
| 401 | Missing or invalid API key (unauthorized). |
ErrorEnvelope |
| 403 | The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). |
ErrorEnvelope |
| 404 | The resource does not exist, or belongs to another organization (not_found). |
ErrorEnvelope |
| 409 | The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). |
ErrorEnvelope |
| 422 | Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. |
HTTPValidationError |
Example response (shape)
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"entity": "string",
"outcome": "string",
"trigger": "daily",
"reason": "string",
"acting_for": "string",
"run_on": "2026-09-21",
"status": "done",
"open_before": 1,
"open_after": 1,
"by_rules": 1,
"by_ai": 1,
"ai_items": 1,
"log": [
{
"step": "check",
"text": "string",
"count": 1,
"kind": "string",
"item": "string",
"tools": [
null
],
"settled": true
}
],
"handoffs": [
{
"kind": "string",
"title": "string",
"path": "string",
"ref": "string",
"count": 1,
"due": "2026-09-21"
}
],
"questions": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"outcome": "string",
"item_ref": "string",
"item_title": "string",
"question": "string",
"status": "answered",
"answer": "string",
"answered_by": "string",
"answered_at": "2026-09-21T09:30:00Z",
"created_at": "2026-09-21T09:30:00Z",
"pass_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
],
"model": "string",
"error": "string",
"started_at": "2026-09-21T09:30:00Z",
"finished_at": "2026-09-21T09:30:00Z"
}
POST /v1/entities/{entity}/autopilot/{outcome}/passes/stream
Run a pass of an outcome now, with its progress
POST /v1/entities/{entity}/autopilot/{outcome}/passes, answered as it works: the person
sees each step as it happens. A pass already running is a 409 before anything is streamed.
| Required scope | draft (admin implies every scope) |
| Idempotency-Key | not used |
| Operation id | run_autopilot_pass_streaming_v1_entities__entity__autopilot__outcome__passes_stream_post |
Parameters
| In | Name | Type | Required | Description |
|---|---|---|---|---|
| path | entity |
string | yes | Entity code, e.g. CH01 (GET /v1/entities). |
| path | outcome |
string | yes | The outcome, e.g. bank_matched. |
Request body
application/json (required): PassInput
| Field | Type | Required | Description |
|---|---|---|---|
language |
"de" | "en" | "fr" | "it" | "sv" |
The language of this pass's notes and questions. (default "en") |
Example request
curl -X POST "$ERP_URL/v1/entities/CH01/autopilot/bank_matched/passes/stream" \
-H "Authorization: Bearer $ERP_KEY" \
-H "Content-Type: application/json" \
-d '{
"language": "en"
}'
Responses
| Status | Meaning | Body |
|---|---|---|
| 200 | One JSON object per line: step for each step of the pass (the fields of a log line: step, text, ...), working every few seconds, then done with the pass (the fields of PassOut) or error (status, error). |
application/x-ndjson |
| 401 | Missing or invalid API key (unauthorized). |
ErrorEnvelope |
| 403 | The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). |
ErrorEnvelope |
| 404 | The resource does not exist, or belongs to another organization (not_found). |
ErrorEnvelope |
| 409 | The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). |
ErrorEnvelope |
| 422 | Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. |
HTTPValidationError |
Schemas
AnswerInput
| Field | Type | Required | Description |
|---|---|---|---|
answer |
string | yes | The person's answer. (min length 1; max length 2000) |
AutopilotOut
| Field | Type | Required | Description |
|---|---|---|---|
entity |
string | yes | Code of the company. |
today |
string (date) | yes | The company's today. |
ai_budget |
integer | yes | Items the AI may work on for this company a day. |
ai_used |
integer | yes | Items sent to the AI today. |
outcomes |
array of OutcomeOut |
yes | Every outcome Autopilot can keep. |
questions |
array of QuestionOut |
yes | Open questions, oldest first. |
Handoff
| Field | Type | Required | Description |
|---|---|---|---|
kind |
string | yes | What kind of step, for a screen to word it: approve (what waits for a second person), match_lines (bank lines to match by hand), reconcile_account (mark a bank account reconciled), activate_vendors (new vendors whose bills wait for them), finish_bills (draft bills to finish by hand), approve_bills (bills waiting for a second person), approve_differences (bills that differ from their purchase orders); bill_subscriptions, invoice_deliveries, invoice_stays, mend_recurring, issue_invoices, approve_invoices, send_invoices (invoicing); send_reminders, send_letters, withdraw_letters, collect_invoices, approve_collections, release_collections (getting paid); pay_bills (bills due that Autopilot left to a person), release_payments (payments to send to the bank), book_recurring (recurring journals it could not book), run_depreciation (a month's depreciation it could not run; ref is the period, e.g. 2026-09); approve_close (approvals that hold the close), close_checks (close checks of a month left to a person), close_period (close a month whose checklist passes), prepare_vat (a VAT return that could not be prepared), finalise_vat, approve_vat, submit_vat, amend_vat (a VAT return's next step), ic_differences (intercompany differences to resolve), group_checks (a group's close checks that fail), read_pack (the month's report pack names blockers). |
title |
string | yes | What the person does, in English, e.g. Approve the bank postings that wait for a second person. |
path |
string | yes | Where in the app they do it, e.g. /approvals?entity=CH01. |
ref |
string or null | What it is about where an outcome has several, e.g. the account code of a bank account, a month (2026-09), a VAT return's reference or a group's code. |
|
count |
integer or null | How many items it covers, if counted. | |
due |
string (date) or null | By when it is to be done, if there is a day: the close calendar's working day for closing a month, a VAT return's due date. |
LogLine
| Field | Type | Required | Description |
|---|---|---|---|
step |
"check" | "handoff" | "judgement" | "note" | "recheck" | "rules" |
yes | check (what was open), rules (what code settled), judgement (one item the AI worked on), recheck (what is open after), handoff (what was left to a person), note (anything else, e.g. the AI budget used up). |
text |
string | yes | What happened, in English; for judgement, the item and the AI's account in the outcome's language. |
count |
integer or null | For check, rules and recheck: how many items. |
|
kind |
string or null | For note and a rules that stopped: budget (the AI's share used up), time (the pass's time for the AI up), no_ai (no model available), busy (the model busy), rules_stopped. |
|
item |
string or null | The item's reference, for judgement. |
|
tools |
array of string or null | The tools the AI called for the item, in order. | |
settled |
boolean or null | For judgement: whether the item was settled, as the outcome's own check found afterwards (not as the AI said). |
OutcomeOut
| Field | Type | Required | Description |
|---|---|---|---|
key |
string | yes | The outcome, e.g. bank_matched. |
area |
string | yes | Its area: bank, payables, receivables, ledger, close, tax, group, sales. |
title |
string | yes | The outcome in English, e.g. The bank is matched. |
test |
string | yes | How the system knows it is true, in English. |
events |
array of string | yes | What makes it work at once, in English. |
enabled |
boolean | yes | Whether Autopilot keeps it for this company. |
acting_for |
string or null | yes | The person whose work its passes count as. |
language |
"de" | "en" | "fr" | "it" | "sv" |
yes | The language of its notes and questions. |
options |
object | yes | Its settings, with the defaults filled in. |
due |
boolean | yes | Something happened that gives it work: a pass comes soon. |
state |
"off" | "on_track" | "open" | "problem" | "waiting" |
yes | off; on_track (nothing open after the last pass); open (items open, none waiting for a person); waiting (a person's step or question waits); problem (the last pass failed). |
open |
integer or null | yes | Items open after the last pass. |
last_pass |
PassSummary or null |
yes | The latest pass. |
handoffs |
array of Handoff |
yes | What the latest pass left a person. |
OutcomeSettingInput
| Field | Type | Required | Description |
|---|---|---|---|
enabled |
boolean | yes | Switch Autopilot on or off for this outcome. |
language |
"de" | "en" | "fr" | "it" | "sv" |
The language of its notes and questions. (default "en") |
|
options |
object | Its settings: vendors_paid takes days_before_due (pay a bill this many days before it is due, 0 to 30, default 2); the others take none. |
PassInput
| Field | Type | Required | Description |
|---|---|---|---|
language |
"de" | "en" | "fr" | "it" | "sv" |
The language of this pass's notes and questions. (default "en") |
PassOut
| Field | Type | Required | Description |
|---|---|---|---|
id |
string (uuid) | yes | The pass's id. |
entity |
string | yes | Code of the company. |
outcome |
string | yes | The outcome, e.g. bank_matched. |
trigger |
"daily" | "event" | "person" |
yes | What started it: event (something happened, see reason), daily (the daily pass), person (Run now). |
reason |
string or null | yes | Why, e.g. bank statement imported. |
acting_for |
string | yes | The person whose work it counts as. |
run_on |
string (date) | yes | The company's day it ran on. |
status |
"done" | "failed" | "running" |
yes | running, done or failed. |
open_before |
integer or null | yes | Items not yet true when it started. |
open_after |
integer or null | yes | Items not yet true when it ended. |
by_rules |
integer | yes | Items the rules (code, no AI) settled. |
by_ai |
integer | yes | Items the AI settled, as the outcome's check found after. |
ai_items |
integer | yes | Items sent to the AI (what counts against the budget). |
log |
array of LogLine |
yes | What it did, step by step. |
handoffs |
array of Handoff |
yes | What it left a person, each with its place. |
questions |
array of QuestionOut |
yes | What the AI asked a person in this pass. |
model |
string or null | yes | The model that judged, if any did. |
error |
string or null | yes | Why it failed. |
started_at |
string (date-time) | yes | When it started. |
finished_at |
string (date-time) or null | yes | When it ended. |
PassSummary
| Field | Type | Required | Description |
|---|---|---|---|
id |
string (uuid) | yes | The pass's id. |
outcome |
string | yes | The outcome. |
trigger |
"daily" | "event" | "person" |
yes | What started it. |
reason |
string or null | yes | Why. |
acting_for |
string | yes | The person whose work it counts as. |
status |
"done" | "failed" | "running" |
yes | running, done or failed. |
open_before |
integer or null | yes | Items open when it started. |
open_after |
integer or null | yes | Items open when it ended. |
by_rules |
integer | yes | Settled by the rules. |
by_ai |
integer | yes | Settled by the AI. |
ai_items |
integer | yes | Sent to the AI. |
error |
string or null | yes | Why it failed. |
started_at |
string (date-time) | yes | When it started. |
finished_at |
string (date-time) or null | yes | When it ended. |
QuestionOut
| Field | Type | Required | Description |
|---|---|---|---|
id |
string (uuid) | yes | The question's id (to answer it). |
outcome |
string | yes | The outcome it belongs to, e.g. bank_matched. |
item_ref |
string | yes | The item it is about (a bank line's id, ...). |
item_title |
string | yes | The item, as a person reads it. |
question |
string | yes | What the AI asks, in the outcome's language. |
status |
"answered" | "dropped" | "open" |
yes | open until a person answers; dropped when the item was settled otherwise. |
answer |
string or null | yes | The person's answer. |
answered_by |
string or null | yes | Who answered. |
answered_at |
string (date-time) or null | yes | When. |
created_at |
string (date-time) | yes | When it was asked. |
pass_id |
string (uuid) | yes | The pass that asked it. |