Quickstart
Create an API key and make your first request.
Get your API key
- Log in to your ibakepro dashboard
- Open Settings > Integrations and expand the Developers card
- Click Create API key
- Name the key and choose its type: secret for server-side code, publishable for browser code
- Select the scopes it needs.
products:readis enough for the request below - Copy the key. It is shown once and cannot be retrieved later
The key looks like ibp_sk_live_au_<43 characters>. The au segment is your account's region and is fixed at creation.
The REST API requires the Business plan. On any other plan every v2 request
returns 403 plan_required.
Base URL
Every endpoint lives under your region's host:
https://{region}.api.ibakepro.com/api/v2
Use au, us, or eu to match the region segment in your key. A mismatch returns 401 invalid_api_key. The examples below use au.
Making your first request
GET /products lists your catalog. It requires products:read and accepts either key type.
curl -G https://au.api.ibakepro.com/api/v2/products \
-H "Authorization: Bearer ibp_sk_live_au_ABC" \
-d limit=10
Example response
The list returns storefront-visible products only, so a product that is inactive, storefront-disabled, or deleted will not appear here.
Response
{
"data": [
{
"id": "prod_ze9HI0w0LpVbemUI",
"name": "Chocolate Birthday Cake",
"slug": "chocolate-birthday-cake",
"status": "active",
"starting_from": 85,
"image": "https://storage.googleapis.com/ibakepro-media/products/chocolate-birthday-cake.png",
"category": "Cakes",
"featured": false,
"updated_at": "2026-06-04T07:17:34.854Z"
}
],
"pagination": {
"limit": 10,
"has_more": true,
"next_cursor": "eyJpZCI6InByb2R1Y3QtMTc4MDMxNzI0ODQxMy0yOWNldmtiNm0ifQ",
"prev_cursor": null
}
}
Pass next_cursor back as ?cursor= to fetch the next page. image is null when the product has no image, and starting_from is null when it has no resolvable price.
If the request fails
| Status | Identifier in the body | Cause |
|---|---|---|
401 | error.code is invalid_api_key | Malformed key, revoked or expired key, or a region that does not match the host |
403 | error.code is insufficient_scope | The key does not hold products:read |
403 | error.code is publishable_key_not_allowed | A publishable key was sent to a secret-key-only endpoint |
403 | error is plan_required | The account is not on the Business plan |
403 | error is account_inactive | The account is suspended or closed |
429 | error is Too many requests | Rate limited; wait for the Retry-After header |
The 401 and 403 scope errors use the standard { "error": { "type", "code", "message" } } envelope. The plan, account, and rate-limit responses are flat objects with a top-level error string.
Next steps
- Authentication guide - Key types, scopes, regions, rate limits, idempotency
- Products endpoint - Read your catalog and run delta syncs
- Orders endpoint - Create and retrieve orders
- Checkout endpoint - Hosted checkout sessions
- Webhooks guide - Subscribe to order, payment, customer, and product events
- Pagination guide - Work with cursor-paginated responses
- Errors guide - Error types and codes