Quickstart

Create an API key and make your first request.

Get your API key

  1. Log in to your ibakepro dashboard
  2. Open Settings > Integrations and expand the Developers card
  3. Click Create API key
  4. Name the key and choose its type: secret for server-side code, publishable for browser code
  5. Select the scopes it needs. products:read is enough for the request below
  6. 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.

GET
/api/v2/products
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

StatusIdentifier in the bodyCause
401error.code is invalid_api_keyMalformed key, revoked or expired key, or a region that does not match the host
403error.code is insufficient_scopeThe key does not hold products:read
403error.code is publishable_key_not_allowedA publishable key was sent to a secret-key-only endpoint
403error is plan_requiredThe account is not on the Business plan
403error is account_inactiveThe account is suspended or closed
429error is Too many requestsRate 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