Skip to main content

Overview

Some assistant tools need live data that does not arrive via webhooks β€” β€œwhere is my order?”, β€œis this in stock?”, β€œsend me a checkout link”. For those, Vambe calls URLs you declare in capabilities.outbound. You expose an endpoint per capability; Vambe calls it on demand. If you don’t declare a capability, Vambe simply won’t offer that tool for your app.

How Vambe calls you

Every outbound request is an HTTP POST with a JSON body and these headers: Use the bearer token (and store id) to scope the response to the right merchant.
Security requirements. Capability URLs must be HTTPS and must resolve to a public IP β€” Vambe blocks requests to private, loopback, and link-local addresses. Respond within ~15 seconds; on timeout or error Vambe degrades gracefully (the tool returns no data).

order_get β€” live order status

Vambe calls this when the assistant is asked about an order’s status. Request
Response β€” the canonical order status shape:
All fields except fulfillmentStatus, tags, and fulfillments are optional.

stock_get β€” stock by location

Vambe calls this when the assistant needs live inventory. Request
Response β€” an array, one entry per product:
Vambe calls this when the assistant builds a cart and needs a payable link to send the customer. Request
Response β€” the checkout link (full URL; Vambe shortens it before sending) and the id of the checkout you created:
external_checkout_id is required: it is your own id for the checkout behind the link. Vambe records at this moment which conversation produced the checkout, keyed by that id β€” see Sale attribution below. If your ids are numeric, send them as numbers or as strings β€” Vambe accepts both here and on the order and checkout webhooks, and stores them in their string form. Ids above JSON’s safe integer range (2^53 - 1, i.e. 9007199254740991) must be sent as strings: above that, JSON parsers silently round the value and two different checkouts can collapse onto the same id, so Vambe rejects them. stockAdjustments is optional β€” include it if you clamped quantities to available stock. Return { "link": null } if a link cannot be created; you may add an optional error string explaining why (it is logged on Vambe’s side, never shown to the shopper).

Sale attribution

When the shopper later pays, your order webhook must include the same id as external_checkout_id. That is the only thing Vambe needs to credit the sale to the assistant conversation that produced it:
  1. You respond to checkout_create with external_checkout_id.
  2. Vambe stores the attribution (conversation ↔ checkout) on its side.
  3. Your order webhook repeats external_checkout_id; Vambe looks the checkout up and attributes the order.
If the response omits external_checkout_id, the link still reaches the shopper but the sale can never be attributed β€” the app checklist fails the checkout_create check for this reason. One checkout attributes at most one order.

Reserved capability β€” products_list

If you prefer Vambe to pull your full catalog instead of pushing product webhooks, the products_list capability key is reserved for that model. Coordinate with the Vambe team before relying on it.