Read the state
Authentication
Path parameters
Response
The execution this belongs to — the value you poll for the state and address every results endpoint with. Always present here: an event exists because an execution does.
The session this execution belongs to. An execution launched on its own is its own session, so the two values usually match — treat them as independent anyway: an execution can be one step of a wider journey. Address everything by execution_id.
The application this execution was launched with — the one your secret belongs to. Worth keeping when your product uses more than one, a sandbox and a production app being the usual case: every record and every event we send carries it.
The customer_id you supplied when the execution was initialised, returned as you sent it — so an answer can be routed to the right case with no lookup on your side.
How the call that created the execution was authorised: an application secret for a server-to-server call, or a user session when it was launched from a console. An audit field — it says who started the run, not how it went.
The precise cause of the state. Every reason belongs to exactly one status_code family and its wording never changes, so it is safe to branch on — read status_code when the family is all you need, and see the lifecycle for what each one asks of you.
- Reasons for
ONGOING:ACCEPTED: queued, nothing has started yet.WAITING: picked up, the engine is warming up.RUNNING: logged in and extracting.ASYNC_WAIT: waiting on the source to produce something on its own schedule.
- Reasons for
ACTION_REQUIRED:MFA_REQUIRED: the source asked for a strong-authentication factor.INPUT_REQUIRED: the engine needs another field it could not know in advance.
- Reasons for
COMPLETED:COMPLETED: every requested feature answered.
- Reasons for
PARTIAL:PARTIAL: finished, with some features answered and others not.
- Reasons for
FAILED:FAILED: finished, and nothing could be retrieved.
- Reasons for
ABORTED:CLIENT_CANCELLED: you aborted it.USER_CANCELLED: your customer abandoned it.ACTION_TIMEOUT: nobody answered the challenge in time.TIMEOUT: the run exceeded itsexecution_timeout.CUSTOMER_INTERVENTION_REQUIRED: a person was needed and none was available.SYSTEM_CANCELLED: the platform stopped it.
- Reasons for
AUTH_ERROR— the source refused the login, and retrying the same values will not help:INCORRECT_CREDENTIALS: rejected. Ask your customer for them again.INCORRECT_MFA: the challenge was answered wrongly.BLOCKED_USER: the institution has blocked the access.FRIEZED_CREDENTIALS: the access is temporarily frozen.CHANGE_PASSWORD: the institution requires a password change first.MANUAL_INTERVENTION: the person must do something in the source’s own channel.INCOMPATIBLE_ACCESS: this access does not work through this engine’s channel.DUPLICATED_SESSION: another session is already open for that user.
- Reasons for
UNHANDLED_AUTH_ERROR:UNHANDLED_AUTH_ERROR: the login failed in a way we could not classify.
- Reasons for
CONFIGURATION_ERROR— the request itself, so retrying it unchanged fails the same way:BAD_CONFIGURATIONS: a feature configuration the engine does not accept.INCORRECT_PARAMETERS_FORMAT: the parameters did not match the engine’s form.INCORRECT_RESUME_FORMAT: the resume body did not match the published form.ENCRYPTION_ERROR: an encrypted value could not be opened.T10N_FORBIDDEN: your application may not tokenize.T10N_NOT_AVAILABLE: this engine does not support tokenization.T10N_REJECTED: the token is revoked or broken.T10N_EXCEPTION: the stored credentials could not be read.BAD_PROXY_CONFIGURATION: ours, not yours — contact support.
- Reasons for
TEMPORARY_ERROR— nothing is wrong with your request, retry later:OUT_OF_SERVICE: the source itself is unavailable.ENGINE_UNAVAILABLE: the engine is not serving right now.ALREADY_EXECUTING: another execution is already running for that access.ENGINE_BANNED,AUTO_CAPTCHA_ERROR,PROXY_ERROR,NETWORK_ERROR,INTERNAL_ERROR: the run could not be set up. Ours, and transient.
AUTH_OK belongs to this vocabulary too, but it only ever appears in authentication_status: a login that succeeds leaves the execution ONGOING.
How many records of each kind were retrieved — a quick way to see whether an execution brought
anything back before you read it. The key is <family>:<subtype>@<product>, so
financial_card:credit@financial_card counts the credit cards and
financial_card:debit@financial_card the debit ones.
Whether the ended webhook reached your endpoint. skipped means no rule was bound to it;
anything else says how the delivery went, and a failed one is retried in the background.
The family a state belongs to, and the value to branch on: it is always present, and every status_reason belongs to exactly one of these. The precise cause lives in the reason — read it when the family is not specific enough to decide.
Allowed values are:
ONGOING: The execution is ongoingACTION_REQUIRED: The execution is waiting for an inputCOMPLETED: The execution has been completedABORTED: The execution has been abortedCONFIGURATION_ERROR: The execution has been rejected due to a configuration errorPARTIAL: The execution has been completed with errorsTEMPORARY_ERROR: The execution cannot be processed due to a temporary errorAUTH_ERROR: The execution failed due to an authentication errorUNHANDLED_AUTH_ERROR: The execution failed during the login because of an unhandled errorFAILED: The execution has failed
Whether the execution is over. While it is false the state and the records can still change.
How many of messages are warnings: the execution carried on.
How many of messages are errors. A PARTIAL or FAILED run explains itself here.
How the login went, on its own — separate from how the extraction went. not-performed until the engine has tried, AUTH_OK once the source accepted the credentials, and otherwise the reason it refused them.
It is the field that tells we could not get in from we got in and the data did not come, which are different conversations with your customer.
Elapsed since work began — active processing AND any time spent waiting for a person.
Elapsed since you asked: queue, processing and waiting. The number your customer feels.
Active processing only. Compare it with total_elapsed_time when a run feels slow: the gap is
queue and waiting, not work.
The deadline for answering a pending challenge. Past it the execution is aborted with
ACTION_TIMEOUT and has to be started again.
When the platform will pick this execution up again on its own. It appears while a source is
taking its own time (ASYNC_WAIT): nothing to do but wait for the next event.
One entry per feature you asked for, with its own outcome — which is how a PARTIAL execution tells you what arrived and what did not.
What the engine refused in configurations, field by field. A CONFIGURATION_ERROR says to
look here.
What the engine refused in parameters, field by field — a wrong shape, a missing value, a
date outside what this source keeps.
Notes the engine recorded on the way — information, warnings and errors — each with loc, the
feature that raised it. The id and the wording are the engine’s own: read them when a run
ended in a way you did not expect, and log them rather than branching on them.