[
{"t":"Instant integrator API guide","u":"/docs/guide/","k":"guide","m":"","p":"Guide","x":"instant integrator api guide the integrator api is what an integrator's servers call to run their customers in instant: the customers, their members and the members' tokens, the webhook instant posts to, and the return url and its origins. credentials are issued by the instant team, who also bring an integrator live. the reference (booksbyinstant.com/docs) has every path, field and status. this guide says what a reference cannot: the conventions every route follows, how to retry, how to verify a webhook, and how each object lives. every id and secret below is a placeholder."},
{"t":"The API","u":"/docs/guide/#the-api","k":"guide","m":"","p":"Instant integrator API guide","x":"the api - base. https://app.booksbyinstant.com, with every route under /api/integrator/v1. - production only. integrators integrate against production; there is no test environment. a customer you make while building is a real one. a customer cannot be deleted. a bank connected in it from a page on your own machine is a real bank too. - versions. versions are in the path: a breaking change gets v2 beside v1. a field may be added to an answer at any time; a client ignores fields it does not know. - the customer api. a member token works on the customer api, as that member. the customer api has its own reference and guide, for integrators with a credential: they are not on this page, and fetching these docs says how to fetch them."},
{"t":"Authentication","u":"/docs/guide/#authentication","k":"guide","m":"","p":"Instant integrator API guide","x":"authentication every request carries one secret as authorization: bearer <secret>, exactly: the scheme bearer, one space, and the secret in its minted format. anything else is 401 before anything else is read. whether a well-formed secret is live is checked after the request's own validation: a malformed request can answer 400, 404, 413 or 415 before a dead secret's 401 (put /api/integrator/v1/webhook checks the credential before it looks at the url). secret format where it works who mints it --- --- --- --- integrator credential live_<100 hex> the integrator api only the people running instant, shown once member token live_m_<100 hex> the customer api, as that member the integrator (post /api/integrator/v1/customers/{id}/members/{memberid}/tokens), shown once webhook signing secret live_w_<64 hex> never sent to instant; it verifies what instant posts instant, on every put /api/integrator/v1/webhook, shown once a credential is never accepted where a member token is expected and the other way round; a session cookie or any other token is never accepted. unknown, revoked, rotated and a disabled integrator's credentials are the same 401 \"unauthorized.\", indistinguishable on purpose. a 401 carries www-authenticate: bearer realm=\"instant-integrator-api\". keep every secret on the integrator's servers only, in a secret manager. instant keeps the credential and member tokens only as a sha-512 hash, and the webhook secret encrypted, because it signs with it. each has a hint: the prefi"},
{"t":"Requests","u":"/docs/guide/#requests","k":"guide","m":"","p":"Instant integrator API guide","x":"requests - a body is content-type: application/json (anything else is 415 \"use a json request.\"), one json object (else 400 \"check your details and try again.\"), within the route's size limit (limits; over it, declared or sent, is 413 \"request is too large.\"). - bodies are strict: a field the route does not take is 400 \"invalid <what> request: unknown field.\", and the field is not repeated in the answer. a refused field is named by its path with what it must be (\"invalid customer request: member.language must be one of instant's languages: …\"). - a route that takes a query (the two lists) is strict about it: another parameter, one given twice, an empty value or a number with a leading zero is 400. a route that takes none ignores one. - ids are uuids, matched in any case and answered in lower case. a path id that is not a uuid is the same 404 as an unknown one, never 400. another integrator's object is 404, never 403. - references (reference, member.reference) are the integrator's own ids, 1 to 200 characters; a member reference is unique across all the integrator's customers, so a person in two customers is two members. spaces at either end are trimmed; any other whitespace at an end (a tab, a newline, a no-break space) is refused, never trimmed."},
{"t":"Responses","u":"/docs/guide/#responses","k":"guide","m":"","p":"Instant integrator API guide","x":"responses every answer a route gives, success or not, is x-content-type-options: nosniff and cache-control: no-store, except the docs themselves: a 200 or 304 of the docs endpoints is private, no-cache, with an etag. json is utf-8; times are iso 8601 in utc with milliseconds (2026-11-06t10:00:00.000z). a create answers 201; everything else that succeeds answers 200."},
{"t":"Errors","u":"/docs/guide/#errors","k":"guide","m":"","p":"Instant integrator API guide","x":"errors every answer that is not a success is one envelope: error is instant's sentence for people; code is stable and is what an integrator branches on; retryafter (seconds) is there only when above 0, with a retry-after header (as a 429 does when there is a wait). a 409 that names an object already there carries existingid too. status code meaning --- --- --- 400 validation_error the request is refused as sent; the sentence says why 401 unauthenticated no live secret (authentication) 403 forbidden the member may not do this (a role, an approval rule) 404 not_found no such object for this caller 409 conflict the state does not allow it now (a duplicate, a decided approval, a changed object) 413 limit_exceeded the body or a part is too large 415 unsupported_media_type the wrong content type, or a file of a kind instant never reads 422 unreadable_file a file of a kind instant reads that it could not read 429 rate_limited a rate limit; wait retryafter when given any other (5xx) unavailable always \"instant is temporarily unavailable. please try again shortly.\"; retry later a 4xx keeps the refusal's own sentence; a 5xx always answers the generic one. more codes may be added: treat one you do not know by its status. this api answers 400, 401, 404, 409, 413, 415 and 5xx; 403, 422 and 429 are the customer api's today."},
{"t":"Unknown paths and methods","u":"/docs/guide/#unknown-paths-and-methods","k":"guide","m":"","p":"Instant integrator API guide","x":"unknown paths and methods what a request outside the routes gets: request answer --- --- a path under /api/integrator/v1/ that is not a route, or one under a version that does not exist (v2) 404 with the framework's html not-found page, not the envelope; cache-control: private, no-cache, no-store, max-age=0, must-revalidate a method the route does not take (post /api/integrator/v1/me, delete /api/integrator/v1/customers, put /api/integrator/v1/customers/{id}) 405 with an empty body, no allow header and no envelope options on a route 204 with allow listing its methods and no cors header: the api is server to server head on a get route the get answer without its body a path with a trailing slash (/api/integrator/v1/) 308 to the path without it so a client treats a 404 or 405 without a json body as a wrong path or method in its own code, never as a missing object."},
{"t":"Idempotency and retries","u":"/docs/guide/#idempotency-and-retries","k":"guide","m":"","p":"Instant integrator API guide","x":"idempotency and retries there is no idempotency-key header. what a repeat of each write does: route a repeat --- --- post /api/integrator/v1/customers 409 \"a customer with that reference already exists.\" with existingid, also when two identical creates race: the retry after a lost answer finds what it created post /api/integrator/v1/customers/{id}/members 409 \"a member with that reference already exists.\" without an id: list the customer's members and find the reference; if it is not there, another of your customers has it, because a member reference is unique across all your customers patch /api/integrator/v1/customers/{id}, patch /api/integrator/v1/customers/{id}/members/{memberid} the same values again are a 200 that changes nothing post /api/integrator/v1/customers/{id}/members/{memberid}/tokens not idempotent: each call issues a new token. a token whose answer was lost is never shown again and counts toward the cap of 20 until it is revoked or expires: list the member's tokens and revoke what nobody holds delete /api/integrator/v1/customers/{id}/members/{memberid}/tokens/{tokenid} 409 \"that token is no longer active.\": it is revoked, as asked put /api/integrator/v1/webhook every call mints a new secret and the previous one stops at once. after a lost answer, put again and keep the new secret delete /api/integrator/v1/webhook, put /api/integrator/v1/return-url, delete /api/integrator/v1/return-url, put /api/integrator/v1/return-origins idempotent: the same state again is "},
{"t":"Pagination","u":"/docs/guide/#pagination","k":"guide","m":"","p":"Instant integrator API guide","x":"pagination get /api/integrator/v1/customers and get /api/integrator/v1/webhook/deliveries answer a page at a time, newest first. a page's nextcursor is the next request's cursor, and it is null on the last page. pages hold steady while customers are added: a customer created after the first page never shifts a later one. limit (1 to 200, 50 by default) sets the page's size; a deliveries page can be narrowed by status. the other lists are whole: a customer's members and entities, oldest first, and a member's tokens, newest first."},
{"t":"Limits","u":"/docs/guide/#limits","k":"guide","m":"","p":"Instant integrator API guide","x":"limits limit value --- --- request body 4096 bytes by default; a member's 32 kib, which 500 entity ids need fields references 1–200 characters; names 1–120; urls at most 2000; up to 500 entity ids in a selection tokens at most 20 active, unexpired tokens per member (a resource, not a rate) rates, per integrator or per customer none of their own yet webhook a payload is at most 2048 bytes; a receiver has 10 seconds; 7 attempts; deliveries are kept 30 days"},
{"t":"Webhooks","u":"/docs/guide/#webhooks","k":"guide","m":"","p":"Instant integrator API guide","x":"webhooks instant posts to the integrator's webhook what it would otherwise have told a person: the kinds and the payload are in the reference. instant adds kinds and fields over time: answer 2xx to a kind you do not know and drop it; ignore fields you do not know. a notice is delivered only when its recipient is the integrator's member: a person who is not, such as an accountant a customer has let in, gets none. deliveries continue while a customer is paused. a payload holds ids and the integrator's own references, never content: read what it is about through the customer api, as the member; for docs.updated, fetch the docs. docs.updated concerns no customer. a production release changed a reference or a guide: this api's or the customer api's. it is sent to every active integrator with a webhook, at most once an hour; changes in the meantime go out together. changed names each part that changed, its new version (its etag without the quotes) and the url to fetch it with the integrator credential. like every kind it is delivered at least once: deduplicate on instant-event-id. a rollback that changes what instant serves is announced like any other change, so a version can be announced again. link.finished says that a bank connection link ended, once for each link. item is the bank_link: its id, as the link answered it, and its outcome, connected, cancelled, failed or expired. a link expires when nobody opened it within 15 minutes, or its consent did not come back within the hou"},
{"t":"Headers and verification","u":"/docs/guide/#headers-and-verification","k":"guide","m":"","p":"Instant integrator API guide","x":"headers and verification each delivery is a post of the payload with: - verify the raw body as received, before parsing it; check the timestamp. - delivery is at least once : the same event can arrive more than once, always with the same instant-event-id, so deduplicate on it. - answer any 2xx within 10 seconds and do the work afterwards; the body is read up to 1 kib and ignored. a redirect is a failure and is never followed. - test a duplicate delivery, a slow answer and a receiver outage before going live."},
{"t":"Retries and retention","u":"/docs/guide/#retries-and-retention","k":"guide","m":"","p":"Instant integrator API guide","x":"retries and retention a delivery has 7 attempts, due at 0 s, 1 m, 5 m, 30 m, 2 h, 6 h and 24 h after its creation; a late attempt skips the offsets it missed. delivery runs once a minute, so an attempt can follow its due time by a minute or more. after the seventh failure it is failed and never sent again. while the integrator is disabled its deliveries wait unsent. deliveries are kept 30 days: a pending one older than that fails expired, and delivered and failed ones are then deleted. there is no replay; the deliveries list and the customer api are how a missed event is found."},
{"t":"Lifecycle","u":"/docs/guide/#lifecycle","k":"guide","m":"","p":"Instant integrator API guide","x":"lifecycle object states what the integrator sees --- --- --- integrator active → disabled → active (the people running instant) disabled: the credential and every member token are 401; no agent work runs in its customers; deliveries wait; a member's connection links are refused. enabled again, all of it works; tokens were not revoked credential rotated by the people running instant the old credential is 401 at once; there is no overlap. agree a cut-over time customer active ↔ paused (patch /api/integrator/v1/customers/{id}) paused: instant answers every chat message with a fixed sentence that the customer is paused, and runs no scheduled, background or event work; reads, decisions, uploads, connections and member changes work; customer.paused / customer.resumed are posted. nothing is deleted. there is no delete member active → deactivated → active (patch /api/integrator/v1/customers/{id}/members/{memberid}) deactivated: every token is revoked for good (revokedreason: \"deactivated\") and 401; reactivated: role and access come back, tokens do not. there is no delete. the owner and the last admin cannot be deactivated member token active → expired or revoked both are 401. revoked by the integrator (integrator), by deactivation (deactivated) or by the people running instant (operator) webhook set ↔ removed (put /api/integrator/v1/webhook, delete /api/integrator/v1/webhook; the people running instant may remove it) removed: pending deliveries fail webhook_removed; the history stays"},
{"t":"Fetching these docs","u":"/docs/guide/#fetching-these-docs","k":"guide","m":"","p":"Instant integrator API guide","x":"fetching these docs this guide and the reference are served with the integrator credential, so your servers can fetch them: - get /api/integrator/v1/docs/guide.md answers this guide, as text/markdown; charset=utf-8; variant=gfm. - get /api/integrator/v1/docs/openapi.json answers the reference, an openapi 3.1 document. without a query they answer the integrator api's docs. with ?api=customer they answer the customer api's guide and reference, fetched with the same integrator credential. each answer has an etag: the version of that file, an opaque string that changes when the file changes, and only then. keep it with your copy and send it back as if-none-match; while your copy is current, the answer is 304 without a body. the answers are cache-control: private, no-cache: keep your copy, and ask again before you use it. a fetch is a use of the credential like any other request, a 304 included. with a webhook, docs.updated says when to fetch: fetch once after you set the webhook, then when a notice names a part. without one, check at most once an hour. the public docs page updates within the hour after a notice."},
{"t":"Read the integrator","u":"/docs/integrator-me/","k":"operation","m":"GET","p":"/api/integrator/v1/me","x":"read the integrator integrator /api/integrator/v1/me which integrator the credential belongs to: the way to check a credential."},
{"t":"List customers","u":"/docs/list-customers/","k":"operation","m":"GET","p":"/api/integrator/v1/customers","x":"list customers customers /api/integrator/v1/customers the integrator's customers, newest first, a page at a time. pages hold steady while customers are added. there is no last-use time per customer. limit how many to answer: a whole number from 1 to 200, without a leading zero. cursor the nextcursor of the previous page."},
{"t":"Create a customer","u":"/docs/create-customer/","k":"operation","m":"POST","p":"/api/integrator/v1/customers","x":"create a customer customers /api/integrator/v1/customers a new customer and its first member, who owns it and is an admin. the member's first chat turn starts the company's setup conversation. approvals need a second member: nobody approves their own submission, and every new customer has the default bill approval workflow, so a bill the only member posts waits until a second member approves it; the answer does not say so. a country without a setup of its own gets the general company setup."},
{"t":"Read a customer","u":"/docs/read-customer/","k":"operation","m":"GET","p":"/api/integrator/v1/customers/{id}","x":"read a customer customers /api/integrator/v1/customers/{id} id the customer's id."},
{"t":"Pause, resume or hand over a customer","u":"/docs/update-customer/","k":"operation","m":"PATCH","p":"/api/integrator/v1/customers/{id}","x":"pause, resume or hand over a customer customers /api/integrator/v1/customers/{id} status pauses or resumes the customer; the answer is the customer. while it is paused, instant answers every message with a fixed sentence that the customer is paused, and runs no scheduled, background or event work; reads, decisions, uploads, connections and member changes work, and nothing is deleted. customer.paused or customer.resumed is posted to the webhook. ownermemberid hands the ownership to that member and answers the customer with its members. id the customer's id."},
{"t":"List a customer's entities","u":"/docs/list-entities/","k":"operation","m":"GET","p":"/api/integrator/v1/customers/{id}/entities","x":"list a customer's entities customers /api/integrator/v1/customers/{id}/entities the customer's legal entities, which a selected entity access names: oldest first, archived ones included, no paging. a new customer has none until its setup has made one. id the customer's id."},
{"t":"List a customer's members","u":"/docs/list-members/","k":"operation","m":"GET","p":"/api/integrator/v1/customers/{id}/members","x":"list a customer's members members /api/integrator/v1/customers/{id}/members id the customer's id."},
{"t":"Add a member","u":"/docs/create-member/","k":"operation","m":"POST","p":"/api/integrator/v1/customers/{id}/members","x":"add a member members /api/integrator/v1/customers/{id}/members a member reference is unique across all the integrator's customers: a person in two customers is two members. id the customer's id."},
{"t":"Read a member","u":"/docs/read-member/","k":"operation","m":"GET","p":"/api/integrator/v1/customers/{id}/members/{memberId}","x":"read a member members /api/integrator/v1/customers/{id}/members/{memberid} id the customer's id. memberid the member's id."},
{"t":"Change, deactivate or reactivate a member","u":"/docs/update-member/","k":"operation","m":"PATCH","p":"/api/integrator/v1/customers/{id}/members/{memberId}","x":"change, deactivate or reactivate a member members /api/integrator/v1/customers/{id}/members/{memberid} a change of role or entity access takes effect on the member's next request; a chat turn already running ends. active: false deactivates the member and revokes their tokens for good; active: true reactivates them with their role and access, and new tokens must be issued. id the customer's id. memberid the member's id."},
{"t":"List a member's tokens","u":"/docs/list-member-tokens/","k":"operation","m":"GET","p":"/api/integrator/v1/customers/{id}/members/{memberId}/tokens","x":"list a member's tokens member tokens /api/integrator/v1/customers/{id}/members/{memberid}/tokens revoked and expired tokens included; never a secret. id the customer's id. memberid the member's id."},
{"t":"Issue a member token","u":"/docs/issue-member-token/","k":"operation","m":"POST","p":"/api/integrator/v1/customers/{id}/members/{memberId}/tokens","x":"issue a member token member tokens /api/integrator/v1/customers/{id}/members/{memberid}/tokens not idempotent: each call issues a new token. the secret is in this answer only. a token whose answer was lost is never shown again and counts toward the 20 until it is revoked or expires: list the member's tokens and revoke what nobody holds. id the customer's id. memberid the member's id."},
{"t":"Revoke a member token","u":"/docs/revoke-member-token/","k":"operation","m":"DELETE","p":"/api/integrator/v1/customers/{id}/members/{memberId}/tokens/{tokenId}","x":"revoke a member token member tokens /api/integrator/v1/customers/{id}/members/{memberid}/tokens/{tokenid} revokes the token for good; it stays in the list with status revoked. id the customer's id. memberid the member's id. tokenid the token's id."},
{"t":"Read the webhook","u":"/docs/read-webhook/","k":"operation","m":"GET","p":"/api/integrator/v1/webhook","x":"read the webhook webhook /api/integrator/v1/webhook"},
{"t":"Set the webhook","u":"/docs/set-webhook/","k":"operation","m":"PUT","p":"/api/integrator/v1/webhook","x":"set the webhook webhook /api/integrator/v1/webhook the credential is checked before the url, so instant resolves no name for an unknown caller. every call mints a new signing secret, also for the same url, and shows it this once; the previous secret stops at once. pending deliveries are kept and go to the new url, signed with the new secret. when instant cannot mint a secret right now, the answer is 503."},
{"t":"Remove the webhook","u":"/docs/clear-webhook/","k":"operation","m":"DELETE","p":"/api/integrator/v1/webhook","x":"remove the webhook webhook /api/integrator/v1/webhook removes the webhook and its secret. its pending deliveries fail with webhook_removed; the history stays 30 days. removing when none is set is also a 200."},
{"t":"List webhook deliveries","u":"/docs/list-deliveries/","k":"operation","m":"GET","p":"/api/integrator/v1/webhook/deliveries","x":"list webhook deliveries webhook /api/integrator/v1/webhook/deliveries the integrator's deliveries, newest first, a page at a time. there is no replay: a failed delivery is not sent again, so read what it was about through the customer api. limit how many to answer: a whole number from 1 to 200, without a leading zero. cursor the nextcursor of the previous page. status only the deliveries in this state."},
{"t":"Read the return origins","u":"/docs/read-return-origins/","k":"operation","m":"GET","p":"/api/integrator/v1/return-origins","x":"read the return origins return url /api/integrator/v1/return-origins the return url's own origin counts as registered without being listed."},
{"t":"Set the return origins","u":"/docs/set-return-origins/","k":"operation","m":"PUT","p":"/api/integrator/v1/return-origins","x":"set the return origins return url /api/integrator/v1/return-origins replaces the list of return origins; [] clears it. the same origins again, in any order, are a 200 that changes nothing."},
{"t":"Read the return URL","u":"/docs/read-return-url/","k":"operation","m":"GET","p":"/api/integrator/v1/return-url","x":"read the return url return url /api/integrator/v1/return-url"},
{"t":"Set the return URL","u":"/docs/set-return-url/","k":"operation","m":"PUT","p":"/api/integrator/v1/return-url","x":"set the return url return url /api/integrator/v1/return-url setting the same url again is a 200 that changes nothing."},
{"t":"Clear the return URL","u":"/docs/clear-return-url/","k":"operation","m":"DELETE","p":"/api/integrator/v1/return-url","x":"clear the return url return url /api/integrator/v1/return-url a connection then ends on instant's own result page. clearing when none is set is also a 200."},
{"t":"Read a guide","u":"/docs/read-guide/","k":"operation","m":"GET","p":"/api/integrator/v1/docs/guide.md","x":"read a guide docs /api/integrator/v1/docs/guide.md the guide to this api, or to the customer api with api=customer, as instant serves it now: what the reference does not say, such as the conventions, authentication, errors and limits. it is github flavored markdown, sent as text/markdown; charset=utf-8; variant=gfm. a fetch is a use of the credential, authenticated like any other request. check at most once an hour, with if-none-match. api whose docs: integrator (the default), or customer for the customer api's, fetched with the same integrator credential. if-none-match the etag of the copy you have. while it is current, the answer is 304, without a body."},
{"t":"Read an OpenAPI reference","u":"/docs/read-open-api/","k":"operation","m":"GET","p":"/api/integrator/v1/docs/openapi.json","x":"read an openapi reference docs /api/integrator/v1/docs/openapi.json this api's openapi 3.1 reference, or the customer api's with api=customer, exactly as instant serves it now. a fetch is a use of the credential, authenticated like any other request. check at most once an hour, with if-none-match. api whose docs: integrator (the default), or customer for the customer api's, fetched with the same integrator credential. if-none-match the etag of the copy you have. while it is current, the answer is 304, without a body."},
{"t":"approval.due","u":"/docs/webhooks/#approval-due","k":"webhook","m":"","p":"A member's turn to approve","x":"approval.due a member's turn to approve it is a member's turn in an approval round, or a scheduled run waits for its owner's approval. item is the subject's, usually a document, partner, payment or run. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"browser.takeover_needed","u":"/docs/webhooks/#browser-takeover_needed","k":"webhook","m":"","p":"Reserved: not sent yet","x":"browser.takeover_needed reserved: not sent yet reserved for a later use: instant does not send this kind yet. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"connection.expired","u":"/docs/webhooks/#connection-expired","k":"webhook","m":"","p":"A bank consent ran out","x":"connection.expired a bank consent ran out a bank consent ran out. item is the bank_connection; there is no member. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"connection.synced","u":"/docs/webhooks/#connection-synced","k":"webhook","m":"","p":"A bank backfill or asked read ended","x":"connection.synced a bank backfill or asked read ended a bank connection's read ended: from its first day after the consent, again when a new or rediscovered account or an earlier first day needs a first-day read, or a read the member asked for. item is the bank_connection with outcome completed or failed; there is no member. routine reads send nothing. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"customer.paused","u":"/docs/webhooks/#customer-paused","k":"webhook","m":"","p":"A customer was paused","x":"customer.paused a customer was paused the integrator paused the customer. item is the customer; there is no member. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"customer.resumed","u":"/docs/webhooks/#customer-resumed","k":"webhook","m":"","p":"A customer was resumed","x":"customer.resumed a customer was resumed the integrator resumed the customer. item is the customer; there is no member. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"docs.updated","u":"/docs/webhooks/#docs-updated","k":"webhook","m":"","p":"The docs changed","x":"docs.updated the docs changed a production release changed a reference or a guide: this api's or the customer api's. sent to every active integrator with a webhook, at most once an hour; changes in the meantime go out together. changed names each part that changed, its new version (its etag without the quotes) and the url to fetch it with the integrator credential. like every kind it is delivered at least once: deduplicate on instant-event-id. a rollback that changes what instant serves is announced like any other change, so a version can be announced again. it concerns no customer. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"link.finished","u":"/docs/webhooks/#link-finished","k":"webhook","m":"","p":"A bank link ended","x":"link.finished a bank link ended a bank connection link ended, once for each link: its consent gave a connection, the person cancelled, the bank or instant could not complete it, or it expired. item is the bank_link with its outcome; there is no member. like every kind it can arrive late, or after a later delivery. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"ping.raised","u":"/docs/webhooks/#ping-raised","k":"webhook","m":"","p":"A notice to a member","x":"ping.raised a notice to a member any other notice to a member. item is its subject, or ping. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"reply.ready","u":"/docs/webhooks/#reply-ready","k":"webhook","m":"","p":"A chat reply is ready","x":"reply.ready a chat reply is ready a member's chat reply is recorded: one per reply, with the reply's message id as the delivery's id. item is the thread. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"run.finished","u":"/docs/webhooks/#run-finished","k":"webhook","m":"","p":"Background work finished","x":"run.finished background work finished background work or a recurring action finished for its owner. item is the run. a receiver ignores an event kind it does not know: kinds are added over time."},
{"t":"task.input_needed","u":"/docs/webhooks/#task-input_needed","k":"webhook","m":"","p":"A task needs its owner","x":"task.input_needed a task needs its owner a follow-up task stopped for its owner. item is the task. a receiver ignores an event kind it does not know: kinds are added over time."}
]
