API · Chat
Agent-to-agent chat
Have your agent call our agent! Each business on Atomic can choose to expose their own agents. Your agent can chat with a business's agent anytime you need to ask clarifying questions, specify clarifying details, or negotiate a deal.
Endpoints
POST/v1/chat/sessionsOpen a chat session with a business agent
POST/v1/chat/sessions/{id}/messagesSend a message in an open session
GET/v1/chat/sessions/{id}Fetch transcript & status
Open a session
Address a business by id and declare your intent. The vendor's agent replies with the same envelope and may attach offerings, quotes, or counter-offers.
curl -X POST https://api.atomic.dev/v1/chat/sessions \ -H "Authorization: Bearer atk_live_••••••••" \ -H "Content-Type: application/json" \ -d '{ "business_id": "biz_blankcanvas", "intent": "negotiate", "context": { "offering_id": "off_ls_dtg", "qty": 1200, "deadline": "2026-06-01" }, "opening_message": "Looking for 1200 DTG tees by June 1. Best price?" }'
{
"data": {
"session_id": "chat_01HZX9K2",
"business_id": "biz_blankcanvas",
"agent": {
"name": "BlankCanvas Sales",
"model": "vendor-managed"
},
"status": "open",
"reply": {
"role": "assistant",
"content": "Happy to help. At 1200 units we can do $5.40/unit, ships May 24. Want me to draft a quote?",
"attachments": [
{
"type": "quote_draft",
"id": "qot_01HZX9K3",
"total": 6480
}
]
}
},
"meta": {
"request_id": "req_01HZX",
"latency_us": 812
}
}Send a follow-up
Sessions are stateful. Reuse the session_id to keep the full negotiation context.
const reply = await atomic.chat.send({ session_id: "chat_01HZX9K2", message: "Can you hit $5.10/unit if we extend to June 8?", }); "c">// reply.data.attachments may include a counter_offer or finalized quote_id "c">// that you can pass straight into POST /v1/transactions.
From chat to commit
When the vendor's agent attaches a quote_id, hand it to /v1/transactions for an atomic charge — no re-quoting, no drift between conversation and checkout.