Amba

Offerings

Read the subscription offerings and packages your paywall renders.

An offering is a named set of packages your paywall renders. Each package surfaces one product — with its display fields, trial info, and per-store identifiers. The shape is provider-neutral: render the packages, let the user purchase through the platform store, then gate features with the entitlements read.

Declare products and offerings via the /admin/projects/:projectId/subscriptions/* admin routes (or the amba_products_create / amba_offerings_create MCP tools).

Endpoints

MethodPathDescription
GET/client/offeringsThe offerings + packages your paywall renders.

GET /client/offerings

Query parameters

ParamTypeDescription
offering_idstringWhen set, returns only that offering.

Response 200

{
  "data": {
    "offerings": [
      {
        "offering_id": "default",
        "display_name": "Default",
        "current": true,
        "metadata": {},
        "packages": [
          {
            "package_id": "$annual",
            "position": 0,
            "metadata": {},
            "product": {
              "product_id": "pro_yearly",
              "display_name": "Pro (Yearly)",
              "product_type": "subscription",
              "store_product_refs": { "app_store": "com.app.pro.yearly", "web": "price_1" },
              "grants_entitlement_id": "pro",
              "trial_period_days": 7,
              "duration": "P1Y"
            }
          }
        ]
      }
    ],
    "current_offering_id": "default"
  }
}

A package's product is null when it references a product that has not been declared yet. A project with no offerings returns an empty list and current_offering_id: null.

Errors

  • 500 FETCH_FAILED.

Curl:

curl -X GET '${BASE_URL}/client/offerings' \
  -H 'X-Api-Key: ${CLIENT_API_KEY}' \
  -H 'Authorization: Bearer ${SESSION_TOKEN}'

On this page