API · Projects
Projects: multi-vendor DAGs
A Project is a directed acyclic graph of offerings. Nodes are products or services. Edges describe handoffs (ship, transfer, pass-through) between vendors. Atomic checkout commits the entire graph as one transaction.
Endpoints
POST/v1/projectsCreate a project DAG
GET/v1/projects/{id}Fetch a project
POST/v1/projects/{id}/quoteRe-quote total + per-vendor
Schema
{
"id": "prj_••••",
"name": "string",
"description": "string",
"units": 100,
"nodes": [
{ "id": "n_•", "offering_id": "off_•", "qty": 100 }
],
"edges": [
{ "from": "n_a", "to": "n_b", "label": "ship" }
]
}Example: 100-unit t-shirt run
{
"id": "prj_tshirt_run_100",
"name": "Custom Printed T-Shirt Run — 100 units",
"description": "Purchase products & services from multiple vendors in a single transaction. Build them into full workflows like Legos.",
"units": 100,
"nodes": [
{
"id": "n_design",
"offering_id": "off_il_design",
"qty": 1
},
{
"id": "n_blank",
"offering_id": "off_bc_tee_unisex",
"qty": 100
},
{
"id": "n_print",
"offering_id": "off_ls_dtg",
"qty": 100
},
{
"id": "n_qa",
"offering_id": "off_tc_inspect",
"qty": 100
},
{
"id": "n_fold",
"offering_id": "off_ff_fold",
"qty": 100
},
{
"id": "n_box",
"offering_id": "off_bx_mailer",
"qty": 100
},
{
"id": "n_ship",
"offering_id": "off_ss_fulfill",
"qty": 100
}
],
"edges": [
{
"from": "n_design",
"to": "n_print",
"label": "design file",
"mode": "digital",
"carrier": "Digital",
"service": "S3 link + email"
},
{
"from": "n_blank",
"to": "n_print",
"label": "ship blanks",
"mode": "ship",
"carrier": "UPS",
"service": "Ground",
"transitHours": 48
},
{
"from": "n_print",
"to": "n_qa",
"label": "ship printed",
"mode": "ship",
"carrier": "FedEx",
"service": "2-Day",
"transitHours": 48
},
{
"from": "n_qa",
"to": "n_fold",
"label": "ship approved",
"mode": "ship",
"carrier": "FedEx",
"service": "Ground",
"transitHours": 72
},
{
"from": "n_fold",
"to": "n_ship",
"label": "ship folded",
"mode": "ship",
"carrier": "UPS",
"service": "Ground",
"transitHours": 24
},
{
"from": "n_box",
"to": "n_ship",
"label": "ship boxes",
"mode": "ship",
"carrier": "FedEx",
"service": "Ground",
"transitHours": 48
}
]
}Recommendation API
Pass a high-level goal and Atomic returns a recommended DAG of vendors that satisfy it.
const dag = await atomic.projects.recommend({ goal: "manufacture 100 custom-printed wrapped t-shirts", constraints: { max_unit_cost: 12.0, lead_time_hours: 168 }, }); "c">// dag.nodes, dag.edges — ready to POST to /v1/transactions