CompuDime Public API
Read a store's products, prices, sales, customers and more from its point of sale, and send orders into it. You call the API over HTTPS with a key. Every answer is JSON.
| Address | https://api.compudime.com |
|---|---|
| Also at | https://compudime-public-api.fly.dev The same API at its earlier address; integrations that already call it keep working there. |
| Key | Authorization: Bearer <your key> on every call |
| Reference | Every endpoint, also as an OpenAPI document |
| Samples | Code samples to download, and a Postman collection |
| Support | support@compudime.com |
| Changes | Changelog, version 2026-11-04. How the API changes: Versioning and deprecation |
Quickstart
1. Get a key
Sign in at account.compudime.com and create a key for the store you work with. Copy it and keep it secret: anyone who has it can call the API as you.
- A test key starts with
cc_test_. Its calls use the paying organization's small monthly sandbox allowance, so you can build without paying. Orders you send with it are checked and simulated: they never reach the store. See Test orders. - A live key starts with
cc_live_. Its calls are billed to the plan of the organization that pays for them: the store's, or yours when a store approved you (working across stores). - Keys that start with
cd_test_orcd_live_are older keys. They work the same way.
No account yet? Accounts are by invitation. Write to support@compudime.com.
2. Make your first call
Put the key in an environment variable. Then ask who the key is: its store, its mode, the fields it may read, its rate limit and the store's credits. This call is free.
export PUBLIC_API_KEY='paste your key here'
curl -s https://api.compudime.com/v1/me \
-H "Authorization: Bearer $PUBLIC_API_KEY"
Now read two products, with three fields each:
curl -s "https://api.compudime.com/v1/products?fields=productCode,description,price&limit=2" \
-H "Authorization: Bearer $PUBLIC_API_KEY" \
-H "X-Request-Id: my-first-call"
On Windows PowerShell:
$headers = @{ Authorization = "Bearer $env:PUBLIC_API_KEY"; "X-Request-Id" = "my-first-call" }
Invoke-RestMethod -Headers $headers -Uri "https://api.compudime.com/v1/products?fields=productCode,description,price&limit=2"
In JavaScript (Node 18 or later):
const response = await fetch("https://api.compudime.com/v1/products?fields=productCode,description,price&limit=2", {
headers: { Authorization: `Bearer ${process.env.PUBLIC_API_KEY}`, "X-Request-Id": "my-first-call" },
});
const page = await response.json();
if (!response.ok) throw new Error(`${page.code} (${page.requestId}): ${page.detail}`);
console.table(page.products);
Prefer Postman? Download the Postman collection, import it, and set its apiKey variable to your key. It has every endpoint, generated from the same OpenAPI document as these pages. More samples, ready to run: Code samples.
3. Read the answer
{
"requestId": "my-first-call",
"snapshotId": "6f1d2c3b-4a5e-4f60-8b7a-9c0d1e2f3a4b",
"generatedAt": "2026-10-13T14:00:00Z",
"lastSuccessAt": "2026-10-13T14:00:00Z",
"stale": false,
"fieldPolicyVersion": 1,
"nextCursor": "eyJhZnRlciI6IjQ5MDAwMDA0NjMifQ",
"products": [
{
"productCode": "012000001291",
"description": "PEPSI 2L",
"price": "2.49"
},
{
"productCode": "4900000463",
"description": "COKE 2L",
"price": "2.49"
}
],
"billing": {
"baseCost": 1,
"fieldCount": 3,
"includedFields": 5,
"extraFieldCredits": 0,
"totalCredits": 1,
"decision": "allowed_sandbox",
"pricingVersion": "2026-10-09.2",
"mode": "test",
"priceSource": "default",
"unit": "page",
"quantity": 1
}
}
productsholds the rows, with only the fields you asked for.nextCursoris set when there is more. Send it back ascursorfor the next page. See Paging.billingsays what the call cost, in credits. So do the headersX-Credits-ChargedandX-Credits-Remaining. See Pricing.requestIdis theX-Request-Idyou sent, or one the API made. Quote it when you ask for help.generatedAtandstalesay how fresh CompuDime's copy of the store's catalog is.
When a call fails, the answer has an HTTP error status and a body with a code:
{
"type": "https://api.compudime.com/docs/errors#unauthorized",
"title": "Unauthorized",
"status": 401,
"code": "unauthorized",
"detail": "Public API key is missing or invalid.",
"requestId": "req_0123456789abcdef",
"retryable": false,
"docsUrl": "https://api.compudime.com/docs/errors#unauthorized",
"statusUrl": "https://status.compudime.com",
"support": "mailto:support@compudime.com"
}
Every code is explained on Errors. A failed call is never charged.
Two order APIs, one address
Two order APIs share this address. /v1/orders is the public API described here: your app sends an order into a store's POS, then reads where it stands. /api/v1/orders/... is the CompuDime Orders API: delivery and ordering services push orders into a store's queue, and the store's POS collects them from there. They are separate APIs with their own requests and answers. These pages cover /v1/orders only. For the Orders API, write to support@compudime.com.
Next
- Authentication: keys, working across stores, what a key may do, access levels and scoped keys.
- Paging and cursors: lists, long answers, and syncing only what changed.
- Webhooks: order events sent to your server.
- Rate limits: how fast you may call, and what to do on 429.
- Pricing and credits: what calls cost, and how to check before you call.
- Errors: every code the API answers.
- API reference: every endpoint, field and answer.
- Code samples: runnable files to download, and the Postman collection.
- Changelog and Versioning and deprecation: what changed, and how changes are announced.