Read the contract before you talk to us.
One endpoint prices a job. The contract that describes it is public and needs no key — because deciding whether to build against someone is a thing you should be able to do on your own.
The contract answers for itself
Everything about the request and the response — every field, its type, whether it is required, the nested shapes, worked examples, the deprecation policy and the rate limit — is served by the API itself:
curl https://cerrax-portal-api-zenqusyaia-nw.a.run.app/v1That is generated from the same models that validate your request, so it cannot fall out of step with what the endpoint accepts. It is also why this page is short: anything we retyped here would be a second copy, and second copies go stale.
Pricing a job
The smallest request that returns a price:
curl -X POST https://cerrax-portal-api-zenqusyaia-nw.a.run.app/v1/price \
-H "X-Cerrax-Api-Key: <your key>" \
-H "Content-Type: application/json" \
-d '{
"region": "gb",
"volumeM3": 32.0,
"distanceMiles": 48.0
}'Supply distanceMiles or both postcodes. Access, adjustments, pack level, dates and your own reference are all optional — and the field guide at /v1 lists every one with its meaning.
What we promise, and what we don’t
- The same job returns the same price. The engine is deterministic and versioned; a given input and engine version always produce the same number, and every change to it is published with a date at /kernel/changelog.
- Adding a field is not a breaking change; removing one gets a new version. The full deprecation policy, including the notice period, is in the contract.
- The key identifies the firm. There is no
moverIdfield to pass — you cannot price as somebody else by accident. - A field we don’t accept is refused, not ignored. A misspelling gets a 422 naming it, rather than a price that quietly ignored what you sent.
- When it doesn’t know, it says so. Low-confidence inputs can come back escalated for a human instead of a number. We would rather hand you an honest refusal than a confident guess.
Getting a key
Keys are issued per firm, in a conversation — we’re early, and we’d rather understand what you’re integrating than hand out credentials at scale. Tell us what you’re building and we’ll reply within one working day.
Nothing above requires one. If reading the contract is enough to tell you this isn’t a fit, that is a good outcome and it cost you a curl.