Reseller REST API
The Reseller REST API lets you sell GlycanAge kits from your own webshop. You place an order when a customer buys, we drop-ship the kit straight to them, they register it themselves by scanning a QR code, and you retrieve their result — as JSON, as a PDF, or as an AI interpretation.
There is no dashboard and no login. Everything is done over the API with a key we issue you.
The Partner REST API is built around a clinic: you create patients, assign kits to them, and read results per patient. The Reseller API has no patients. Your customers are ordinary consumers who register their own kits, so everything is addressed by kit code and results are never grouped under a person you manage.
Getting access
Reseller accounts and API keys are created by GlycanAge — there is no self-serve sign-up. Contact your account manager or support@glycanage.com to be set up.
You will be given one or more API keys. A key looks like rsk_live_… in production and rsk_test_… in the sandbox. The token is shown once when the key is created and stored hashed on our side, so save it somewhere safe — we cannot retrieve it later, only replace it. Deleting a key invalidates it immediately.
Authentication
The API uses HTTP Basic authentication. Send your token as the password component; the username is ignored:
Authorization: Basic base64(":" + token)
curl -u ":$GLYCANAGE_TOKEN" https://reseller.api.glycanage.com/products
The token is for server-to-server use. Never ship it to a browser or a mobile app.
Base URLs
| Environment | Base URL |
|---|---|
| Production | https://reseller.api.glycanage.com |
| Sandbox | https://glycanage-external-reseller-api-sandbox-845282005778.europe-west1.run.app |
Sandbox keys only work against the sandbox base URL, and production keys only against production — they are not interchangeable.
Sandbox
The sandbox is a fully isolated environment with its own data and keys. Nothing you do there affects production, and you are never invoiced for a sandbox order.
It simulates the entire fulfilment and lab lifecycle, so you can build and test end-to-end without physical kits or manual processing. Place an order and it advances itself over the following seconds, firing each webhook in turn:
order.shipped— with generated (but structurally valid) kit codes, QR links and tracking.unit.registered— each kit is auto-registered on your behalf, simulating the customer completing the QR page.result.ready— a synthetic result is released for each kit.
A placed order reaches a ready report in roughly half a minute. The generated result values are random and for integration testing only.
Build against the sandbox first. Ordering flows, webhooks and the AI endpoints all work there, so you can exercise your whole integration before a single real kit ships.
Responses and errors
Successful responses are JSON. List endpoints return { "data": [...], "next_cursor": … }; pass next_cursor back as the cursor query parameter to page. next_cursor is null on the last page.
Every error uses the same envelope:
{
"error": {
"code": "invalid_shipping",
"message": "shipping.country is required.",
"field": "shipping.country"
}
}
code— a stable machine-readable identifier. Branch on this, not onmessage.message— a human-readable explanation.field— present on validation errors, naming the offending input.
Full specification
The complete OpenAPI reference, with every endpoint, schema and example, is served by the API itself:
https://reseller.api.glycanage.com/docs
The machine-readable spec is at /docs/openapi.json. Both are also available on the sandbox base URL, where the reference automatically points its "try it" calls at the sandbox.