1 · Use the demo key
Public read access for the demo dataset. For your own tenant, contact us.
# Demo API key (read-only, shared) atlas_demo_KuhlerExampleKey_2026
Developers
Atlas exposes a public REST API for ERP sync, BI integration, and factory MES connectivity. Bearer auth, JSON over HTTPS, real responses. Try it live with the demo key below.
Quickstart
1 · Use the demo key
Public read access for the demo dataset. For your own tenant, contact us.
# Demo API key (read-only, shared) atlas_demo_KuhlerExampleKey_2026
2 · Make a request
Authorization header is required on every protected endpoint.
curl https://kuhler.com/api/v1/orders \ -H "Authorization: Bearer atlas_demo_KuhlerExampleKey_2026"
Both kuhler.com and demo.kuhler.comserve the same API. The data is shared (it’s the demo dataset).
Endpoints
/api/v1/ordersbearer authReturns all orders visible to the API key. Useful for ERP sync.
{
"data": [
{
"id": "ord-001",
"code": "PO-2417",
"brand_slug": "summit",
"ship_by": "2026-06-10",
"total_units": 2400,
"status": "in_production",
"created_at": "2026-04-12",
"line_item_count": 4,
"batch_ids": ["batch-001"]
}
],
"meta": { "count": 5, "total": 5 }
}/api/v1/orders/{id}bearer authReturns the order plus its line items and production batches with milestones.
{
"data": {
"id": "ord-001",
"code": "PO-2417",
"brand_slug": "summit",
"ship_by": "2026-06-10",
"total_units": 2400,
"status": "in_production",
"line_items": [...],
"batches": [
{
"id": "batch-001",
"code": "B-2417-A",
"factory": "Plant A · China",
"milestones": [
{ "id": "m1", "label": "Materials sourced", "state": "done", "date": "2026-04-22" }
]
}
]
}
}/api/v1/ordersbearer authAccepts a structured PO from an external system. Validates and accepts; in production, inserts into the orders table and triggers webhooks.
{
"data": {
"id": "ord-q3k7m2",
"code": "PO-9999",
"brand_slug": "summit",
"ship_by": "2026-09-01",
"total_units": 1200,
"status": "received",
"line_items_received": 4,
"created_at": "2026-05-06T18:42:00.000Z"
}
}/api/v1/batchesbearer authReturns all production batches. Useful for cross-factory KPI dashboards.
{
"data": [
{
"id": "batch-001",
"code": "B-2417-A",
"factory": "Plant A · China",
"units": 2400,
"order_id": "ord-001",
"milestone_count": 5,
"milestones": [...]
}
],
"meta": { "count": 4 }
}/api/v1/customersbearer authReturns all customer brands the API key can access, with portal URLs.
{
"data": [
{
"slug": "summit",
"name": "Summit Athletics",
"primary_color": "#14532D",
"contact": "Mira Chen",
"contact_email": "mira@summitathletics.com",
"portal_url": "https://demo.kuhler.com/portal/summit"
}
],
"meta": { "count": 2 }
}Webhooks
Inbound webhooks let your factory MES (or external systems) push events into Atlas. Outbound webhooks deliver Atlas events to your endpoints. Both use the same Bearer auth.
/api/webhooks/milestone-completedbearer authInbound webhook your factory MES (or your team) calls when a milestone is marked complete. Atlas advances the milestone, posts the auto-update to the order conversation, and notifies the customer portal.
{
"data": {
"received": true,
"batch_id": "batch-001",
"milestone_id": "m3",
"completed_at": "2026-05-08T14:30:00Z",
"completed_by": "lin.wei@plantA.local"
}
}Errors
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | data + meta |
| 201 | Created | data |
| 400 | Bad request | invalid JSON or shape |
| 401 | Unauthorized | missing / invalid Bearer token |
| 404 | Not found | resource doesn't exist |
| 422 | Validation failed | error.details lists field errors |
| 429 | Rate limited | retry after Retry-After seconds |
| 500 | Server error | we'll get paged |
We have prebuilt connectors for NetSuite and Microsoft Dynamics; for SAP and others we use the generic API. Onboarding includes a custom integration session with our engineering team.