Call the API
Make a token, name the business, and call any operation over HTTPS.
Every operation in Allpage is one endpoint: https://allpage.site/api/v1/operations/<operation id>. Reads are GET, changes are POST. The full reference, generated from the same registry, is at https://allpage.site/docs/api and as OpenAPI 3.1 at https://allpage.site/api/v1/openapi.json.
1. Get a token
The owner makes one under Settings, For developers and picks what it can see and change (api.createToken). Send it as Authorization: Bearer ap_pat_…. A connected app's OAuth token works the same way.
2. Name the business
A token from Settings works with the business it was made on. An app's token names the business per request with the Allpage-Business: biz_… header; leave it out with several and you get 409 choose_business with the choices.
3. Call it
curl https://allpage.site/api/v1/operations/customers.search?q=maya \
-H "Authorization: Bearer $ALLPAGE_TOKEN"curl -X POST https://allpage.site/api/v1/operations/customers.add \
-H "Authorization: Bearer $ALLPAGE_TOKEN" \
-H "Idempotency-Key: 7b1c…" \
-H "Content-Type: application/json" \
-d '{"name": "Maya Chen", "email": "maya@example.com"}'Send an Idempotency-Key on every change so a retry can't do it twice.
Start a business
Starting a business and listing the owner's businesses take no Allpage-Business header. With a connected app's token, this works before the owner has any business:
curl -X POST https://allpage.site/api/v1/operations/business.create \
-H "Authorization: Bearer $ALLPAGE_TOKEN" \
-H "Idempotency-Key: 3f9a…" \
-H "Content-Type: application/json" \
-d '{"stage": "starting", "name": "Rise Bakery", "kind": "baker", "location": "Portland, OR", "email": "hello@risebakery.com"}'It answers with businessId. Send it as Allpage-Business from then on. Then read onboarding.next for the next setup step, do it, and read it again until step is null. A retry with the same Idempotency-Key finishes the same business. organizations.list lists the owner's businesses.
Answers
200withstatus: done.202withproposed(waits for the owner atapproveAt) orpending(readLocationuntil it's done).- A problem (
application/problem+json) withcodeanddetailotherwise. Aneedsanswer says what to do next. Codes are listed at https://allpage.site/docs/api/errors.
Ids say what they name (cus_…, bk_…): see typed ids.
Versions
Each token and connected app is pinned to the API version that was newest when it was made. A request without an Allpage-Version header speaks that version, so a later change doesn't break what you built. Send Allpage-Version: <date> to pick another. Every answer names its version in the same header.