Skip to content

Zapier

The Vestiarion integration for Zapier: start a Zap on the agent's decisions and on each bill paid, and add bills for the agent to decide.

The Vestiarion integration connects a workspace to Zapier, so a Zap can start on what the agent does and add bills from the apps you already use:

  • New Agent Decision. A Zap starts on each entry the agent signs: what it paid, held, flagged or scheduled, with its reasoning.
  • Bill Paid. A Zap starts on each bill paid, by the agent on its own or once a person approves it.
  • New Ledger Entry. A Zap starts on every signed entry, by the agent, a person or Vestiarion itself, filtered by domain, actor or action.
  • Create Bill. An email, a form or a spreadsheet row becomes a bill for the agent to decide.

It calls this API with a workspace API key, and works the same on Arc testnet and on Arc mainnet. Its code is in the zapier/ folder of the Vestiarion repository.

NoteJoined by invitation for now

The integration is not in Zapier's app directory yet. Until it is, join it with the invite link: sign in to Zapier, accept, and Vestiarion appears in the Zap editor, marked Invite Only.

Connect a workspace

In a Zap, choose Vestiarion, then Sign in. The connection has two fields:

FieldWhat to put
API KeyA workspace API key. An owner or an admin creates one on the workspace's Settings page, under API keys. Create Bill needs one that can also add records; the triggers need only a read-only one.
Base URLhttps://www.vestiarion.xyz. Change it only for your own deployment. It must be https: plain http is refused, except to localhost, so the key never crosses a network in the clear.

Zapier tests the connection with one read, GET /api/v1/status, and names it after the workspace. The key is sent as Authorization: Bearer, never in a URL. A key that is revoked fails the next step with a request to reconnect.

Triggers

Each trigger is a polling trigger: Zapier asks for the newest entries on your plan's schedule, every 1 to 15 minutes, and starts the Zap once for each entry it has not seen. On the first check, Zapier only remembers what is there, so a Zap starts on entries signed after you turn it on. Each check is one read of the ledger, newest first.

TriggerWhat starts a ZapOptions
New Agent DecisionAn entry the agent signs, such as ap_pay, ap_schedule, ap_hold, ap_flag_fraud or ap_request_info for bills.Domain: one domain, such as Bills.
Bill Paidap_pay that ended paid, by the agent, or approval_paid with status paid, once a person approves. A decision that held the bill, or a payment still waiting, is not one.None.
New Ledger EntryEvery signed entry: people's and Vestiarion's too, such as a bill added, a payee confirmed or a key created.Domain, Actor, and Actions, separated by commas, such as ap_hold, ap_flag_fraud.

Each check reads the newest 100 entries, 200 for Bill Paid. A workspace that signs more than that between two checks starts no Zap for the older ones: use webhooks where every entry must be handled.

What a trigger outputs

The signed entry as the API returns it, detail, hashes and signature included, with these fields on top, so a Zap can map them without digging into detail:

FieldWhat it holds
Seq, Time, Actor, Domain, Action, SummaryThe entry's own fields.
Agent's reasoningWhy the agent decided as it did, when the entry records it.
Bill ID, Milestone ID, Counterparty IDWhat the entry is about, when it says.
Amount, CurrencyThe amount paid, or the bill's amount.
TransactionThe payment's transaction reference, once there is one.
Paid byBill Paid only: agent or human.

Create Bill

Create Bill adds an invoice as a payable, for the agent to decide.

  • Counterparty: the vendor or contractor the bill is from. Pick it from the workspace's first 200 vendors and contractors, or map its ID.
  • Amount: as text, such as 1250.50, so it stays exact. At most 6 decimal places.
  • Due Date: the day the bill is due. A date, or a date and time from another step: only the day is sent.
  • Currency: USDC, the default, or EURC.
  • PO Reference and Goods Received. Without both, the agent asks for the missing detail instead of paying.
  • Memo, up to 280 characters.
  • Early-Payment Discount (Percent) and its Deadline, both or neither.
  • Idempotency Key: something unique to the bill, such as the email's or the row's ID. It is sent as the Idempotency-Key, so a Zap that runs again on the same item within 24 hours adds the bill once. Without it, a replayed Zap adds another bill.

A missing counterparty, amount or due date, or half a discount, stops the step with what to fix, before any request. The step outputs the bill as the API added it, with its Bill ID and Status.

ImportantAn added bill is decided by the agent

The agent decides a bill added from Zapier as it decides one typed into the console, with every guardrail, usually within a minute. Within its limits it may pay it, on the workspace's network. That is the agent's decision under the workspace's rules; the integration itself never approves or pays.

Errors

An API error stops the step with the API's own message, such as "This key cannot do that." for a read-only key adding a bill, and its code. A 401 asks you to reconnect. A 429 tells Zapier to retry after the Retry-After the API sends.

Two Zaps to start from

Tell the team when the agent holds a bill. New Agent Decision with Domain Bills, then Filter by Zapier on Action is ap_hold or ap_flag_fraud, then a message in Slack, Microsoft Teams or email: {{Summary}}: {{Agent's reasoning}}. Vestiarion's own Slack and Telegram notices already cover this, with a link to review the bill; use Zapier when the message goes somewhere else.

Add bills from a spreadsheet. New Spreadsheet Row in Google Sheets, then Vestiarion: Create Bill, with the counterparty's ID, the amount and the due date from the row, and Idempotency Key set to the row's invoice number.

What it does not do

  • It never approves, rejects or pays a bill, and adds only bills.
  • It has no instant triggers yet: the API cannot add a webhook endpoint, so each trigger polls. For an entry the moment it is signed, add a webhook endpoint in Settings and use webhooks, or Webhooks by Zapier.
  • It keeps nothing of its own: no copy of the ledger or of your bills. Zapier keeps the entry IDs it has seen, to start each Zap once.

Edit this page on GitHub (opens in a new tab)