API · Transact
Atomic multi-vendor purchases
One POST /v1/transactions charges every vendor in your basket via Stripe Machine Payments Protocol. If any leg fails, the whole transaction rolls back.
Endpoint
POST/v1/transactionsAtomic purchase across vendors
GET/v1/transactions/{id}Transaction status & receipts
Request
Each line_item references an offering and a quantity. The whole basket is committed or aborted as a unit.
curl -X POST https://api.atomic.dev/v1/transactions \ -H "Authorization: Bearer atk_live_••••••••" \ -H "Content-Type: application/json" \ -d '{ "agent_id": "agt_northwind_42", "payment": { "protocol": "stripe.mpp.v1", "source": "mpp_••••" }, "atomic": true, "line_items": [ { "offering_id": "off_il_design", "qty": 1 }, { "offering_id": "off_bc_tee_unisex", "qty": 100 }, { "offering_id": "off_ls_dtg", "qty": 100 }, { "offering_id": "off_tc_inspect", "qty": 100 }, { "offering_id": "off_ff_fold", "qty": 100 }, { "offering_id": "off_bx_mailer", "qty": 100 }, { "offering_id": "off_ss_fulfill", "qty": 100 } ], "project_id": "prj_tshirt_run_100" }'
Response
{
"data": {
"id": "txn_01HZX2K7E9Q...",
"status": "committed",
"atomic": true,
"total": { "amount": 89500, "currency": "USD" },
"vendor_charges": [
{ "vendor_id": "biz_inklab", "amount": 14500, "stripe_pi": "pi_3O..." },
{ "vendor_id": "biz_blankcanvas", "amount": 42500, "stripe_pi": "pi_3O..." },
{ "vendor_id": "biz_lonestar", "amount": 35000, "stripe_pi": "pi_3O..." },
{ "vendor_id": "biz_threadcheck", "amount": 3200, "stripe_pi": "pi_3O..." },
{ "vendor_id": "biz_foldfast", "amount": 2200, "stripe_pi": "pi_3O..." },
{ "vendor_id": "biz_boxcraft", "amount": 14500, "stripe_pi": "pi_3O..." },
{ "vendor_id": "biz_swiftship", "amount": 22500, "stripe_pi": "pi_3O..." }
],
"rollback_token": "rbk_••••",
"committed_at": "2026-05-07T18:42:11Z"
},
"meta": { "request_id": "req_01HZX", "latency_us": 1820 }
}Atomicity guarantee
- · All vendor charges are authorized in parallel.
- · Capture happens only if every authorization succeeds.
- · On any failure, all auths are voided in the same request.
- · The
rollback_tokencan be used for up to 24h to revert a committed txn.
Idempotency
Pass Idempotency-Key on every POST. The API stores the response for 24 hours and replays it byte-for-byte on retries.