Klaviyo Client API

client

Operations 11

GET /client/review-values-reports Get Client Review Values Reports #
GET /client/reviews Get Client Reviews #
POST /client/reviews Create Client Review #
GET /client/geofences Get Client Geofences #
POST /client/subscriptions Create Client Subscription #
POST /client/push-tokens Create or Update Client Push Token #
POST /client/push-token-unregister Unregister Client Push Token #
POST /client/events Create Client Event #
POST /client/profiles Create or Update Client Profile #
POST /client/event-bulk-create Bulk Create Client Events #
POST /client/back-in-stock-subscriptions Create Client Back In Stock Subscription #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/klaviyo-client-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

klaviyo-client-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Klaviyo Accounts Client API
  version: '2026-04-15'
  description: The Klaviyo REST API. Please visit https://developers.klaviyo.com for more details.
  contact:
    name: Klaviyo Developer Experience Team
    email: developers@klaviyo.com
    url: https://developers.klaviyo.com
  termsOfService: https://www.klaviyo.com/legal/api-terms
  license:
    name: License
    url: https://www.klaviyo.com/legal
servers:
- url: https://a.klaviyo.com
  description: Production
security:
- Klaviyo-API-Key: []
tags:
- name: Client
  description: client
paths:
  /client/review-values-reports:
    get:
      operationId: get_client_review_values_reports
      summary: Get Client Review Values Reports
      description: 'Get all reviews values reports in an account.<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: fields[review-values-report]
        in: query
        description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - results
        explode: false
      - name: filter
        in: query
        description: 'For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#filtering<br>Allowed field(s)/operator(s):<br>`product_external_ids`: `any`, `equals`'
        schema:
          type: string
          example: equals(product_external_ids,'example')
      - name: group_by
        in: query
        description: group by value for this report
        required: true
        schema:
          description: group by value for this report
          type: string
          example: product_id
          enum:
          - company_id
          - product_id
      - name: page[cursor]
        in: query
        description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#pagination
        required: false
        schema:
          type: string
      - name: page[size]
        in: query
        description: 'Default: 20. Min: 1. Max: 100.'
        required: false
        schema:
          type: integer
          default: 20
          maximum: 100
          minimum: 1
      - name: statistics
        in: query
        description: list of statistics to calculate for this report
        required: true
        schema:
          description: list of statistics to calculate for this report
          type: string
          example: average_rating,total_reviews
      - name: timeframe
        in: query
        description: timeframe window for value report
        required: true
        schema:
          description: timeframe window for value report
          type: string
          example: all_time
          enum:
          - all_time
          - last_30_days
          - last_365_days
          - last_90_days
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      responses:
        '200':
          description: Success
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/GetReviewValuesReportResponseCollection'
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 10/s
        steady: 150/m
      x-klaviyo-scopes: []
  /client/reviews:
    get:
      operationId: get_client_reviews
      summary: Get Client Reviews
      description: 'Get all reviews. This endpoint is for client-side environments only, for server-side use, refer to https://developers.klaviyo.com/en/reference/get_reviews<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: fields[review]
        in: query
        description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - author
            - content
            - created
            - images
            - product
            - product.external_id
            - product.image_url
            - product.name
            - product.url
            - public_reply
            - public_reply.author
            - public_reply.content
            - public_reply.updated
            - rating
            - review_type
            - smart_quote
            - status
            - status.rejection_reason
            - status.rejection_reason.reason
            - status.rejection_reason.status_explanation
            - status.value
            - title
            - updated
            - verified
        explode: false
      - name: filter
        in: query
        description: 'For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#filtering<br>Allowed field(s)/operator(s):<br>`status`: `equals`<br>`review_type`: `equals`<br>`rating`: `any`, `equals`, `greater-or-equal`, `less-or-equal`<br>`id`: `any`, `equals`<br>`content`: `contains`<br>`smart_quote`: `has`<br>`public_reply`: `has`<br>`verified`: `equals`<br>`incentivized`: `equals`<br>`edited`: `equals`<br>`media`: `has`<br>`created`: `greater-or-equal`, `less-or-equal`<br>`updated`: `greater-or-equal`, `less-or-equal`'
        schema:
          type: string
          example: equals(status,'published')
      - name: page[cursor]
        in: query
        description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#pagination
        required: false
        schema:
          type: string
      - name: page[size]
        in: query
        description: 'Default: 20. Min: 1. Max: 100.'
        required: false
        schema:
          type: integer
          default: 20
          maximum: 100
          minimum: 1
      - name: sort
        in: query
        description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sorting
        schema:
          type: string
          enum:
          - created
          - -created
          - rating
          - -rating
          - updated
          - -updated
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      responses:
        '200':
          description: Success
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/GetClientReviewResponseDTOCollection'
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 10/s
        steady: 150/m
      x-klaviyo-scopes: []
    post:
      operationId: create_client_review
      summary: Create Client Review
      description: 'Create a review with the given ID. This endpoint is for client-side environments only.<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/ReviewCreateDTO'
      responses:
        '202':
          description: Success
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 10/s
        steady: 150/m
      x-klaviyo-scopes: []
  /client/geofences:
    get:
      operationId: get_client_geofences
      summary: Get Client Geofences
      description: 'Get all geofences in an account.


        Returns a paginated list of all geofences for the specified company.

        This is the GA API endpoint designed for mobile SDK consumption.

        No authentication required.


        Returns a maximum of 100 results per page (default 20).


        This API supports filtering via header instead of query param. Provide

        `X-Klaviyo-API-Filters` header to filter geofences. We don''t use regular

        query param filters here because lat and long are sensitive information.


        Supported filters:

        - `lat` (equals) - Latitude coordinate for distance-based sorting

        - `lng` (equals) - Longitude coordinate for distance-based sorting


        When both lat and lng are provided, geofences are returned sorted by

        distance from the specified coordinates (closest first).


        Example filter header:

        `X-Klaviyo-API-Filters: and(equals(lat,40.7128),equals(lng,-74.0060))`<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: fields[geofence]
        in: query
        description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - latitude
            - longitude
            - radius
        explode: false
      - name: page[cursor]
        in: query
        description: For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#pagination
        required: false
        schema:
          type: string
      - name: page[size]
        in: query
        description: 'Default: 20. Min: 1. Max: 100.'
        required: false
        schema:
          type: integer
          default: 20
          maximum: 100
          minimum: 1
      - name: X-Klaviyo-API-Filters
        in: header
        description: '

          Supported filters:

          - `lat` (equals) - Latitude coordinate for distance-based sorting

          - `lng` (equals) - Longitude coordinate for distance-based sorting


          When both lat and lng are provided, geofences are returned sorted by

          distance from the specified coordinates (closest first).

          '
        required: false
        schema:
          type: string
          example: and(equals(lat,40.7128),equals(lng,-74.0060))
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      responses:
        '200':
          description: Success
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/GetGeofenceResponseCollection'
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 3/s
        steady: 60/m
      x-klaviyo-scopes: []
  /client/subscriptions:
    post:
      operationId: create_client_subscription
      summary: Create Client Subscription
      description: 'Creates a subscription and consent record for email and/or SMS channels based on the provided `email` and `phone_number` attributes, respectively. One of either `email` or `phone_number` must be provided.


        This endpoint is specifically designed to be called from publicly-browseable, client-side environments only and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.


        Do not use this endpoint from server-side applications.

        To subscribe profiles from server-side applications, instead use [POST /api/profile-subscription-bulk-create-jobs](https://developers.klaviyo.com/en/reference/subscribe_profiles).


        Profiles can be opted into multiple channels: email marketing, SMS marketing, and SMS transactional. You can specify the channel(s) to subscribe the profile to by providing a subscriptions object in the profile attributes.


        If you include a subscriptions object, only channels in that object will be subscribed.  You can use this to update `email` or `phone` on the profile without subscribing them, for example, by setting the profile property but omitting that channel in the subscriptions object. If a subscriptions object is not provided, subscriptions are defaulted to `MARKETING`.<br><br>*Rate limits*:<br>Burst: `350/s`<br>Steady: `750/m`


        **Scopes:**

        `subscriptions:write`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/OnsiteSubscriptionCreateQuery'
      responses:
        '202':
          description: Success
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 350/s
        steady: 750/m
      x-klaviyo-scopes:
      - subscriptions:write
  /client/push-tokens:
    post:
      operationId: create_client_push_token
      summary: Create or Update Client Push Token
      description: 'Create or update a push token.


        This endpoint is specifically designed to be called from our mobile SDKs ([iOS](https://github.com/klaviyo/klaviyo-swift-sdk) and [Android](https://github.com/klaviyo/klaviyo-android-sdk)) and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.

        You must have push notifications enabled to use this endpoint.


        To migrate push tokens from another platform to Klaviyo, please use our server-side [POST /api/push-tokens](https://developers.klaviyo.com/en/reference/create_push_token) endpoint instead.<br><br>*Rate limits*:<br>Burst: `150/s`<br>Steady: `1400/m`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/PushTokenCreateQuery'
      responses:
        '202':
          description: Success
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 150/s
        steady: 1400/m
      x-klaviyo-scopes: []
  /client/push-token-unregister:
    post:
      operationId: unregister_client_push_token
      summary: Unregister Client Push Token
      description: 'Unregister a push token.


        This endpoint is specifically designed to be called from our mobile SDKs ([iOS](https://github.com/klaviyo/klaviyo-swift-sdk) and [Android](https://github.com/klaviyo/klaviyo-android-sdk)) and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.

        You must have push notifications enabled to use this endpoint.<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/PushTokenUnregisterQuery'
      responses:
        '202':
          description: Success
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-operation-aliases:
      - create_client_push_token_unregister
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 10/s
        steady: 150/m
      x-klaviyo-scopes: []
  /client/events:
    post:
      operationId: create_client_event
      summary: Create Client Event
      description: 'Create a new event to track a profile''s activity.


        This endpoint is specifically designed to be called from publicly-browseable, client-side environments only and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.


        Do not use this endpoint from server-side applications.

        To create events from server-side applications, instead use [POST /api/events](https://developers.klaviyo.com/en/reference/create_event).


        Note that to update a profile''s existing identifiers (e.g., email), you must use a server-side endpoint authenticated by a private API key. Attempts to do so via client-side endpoints will return a 202, however the identifier field(s) will not be updated.<br><br>*Rate limits*:<br>Burst: `350/s`<br>Steady: `3500/m`


        **Scopes:**

        `events:write`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/EventCreateQueryV2'
      responses:
        '202':
          description: Success
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 350/s
        steady: 3500/m
      x-klaviyo-scopes:
      - events:write
  /client/profiles:
    post:
      operationId: create_client_profile
      summary: Create or Update Client Profile
      description: 'Create or update properties about a profile without tracking an associated event.


        This endpoint is specifically designed to be called from publicly-browseable, client-side environments only and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.


        Do not use this endpoint from server-side applications.

        To create or update profiles from server-side applications, instead use [POST /api/profile-import](https://developers.klaviyo.com/en/reference/create_or_update_profile).


        Note that to update a profile''s existing identifiers (e.g., email), you must use a server-side endpoint authenticated by a private API key. Attempts to do so via client-side endpoints will return a 202, however the identifier field(s) will not be updated.<br><br>*Rate limits*:<br>Burst: `350/s`<br>Steady: `3500/m`


        **Scopes:**

        `profiles:write`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/OnsiteProfileCreateQuery'
      responses:
        '202':
          description: Success
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 350/s
        steady: 3500/m
      x-klaviyo-scopes:
      - profiles:write
  /client/event-bulk-create:
    post:
      operationId: bulk_create_client_events
      summary: Bulk Create Client Events
      description: 'Create new events to track a profile''s activity.


        This endpoint is specifically designed to be called from publicly-browseable, client-side environments only and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.


        Do not use this endpoint from server-side applications.

        To create events from server-side applications, instead use [POST /api/event-bulk-create-jobs](https://developers.klaviyo.com/en/reference/bulk_create_events).


        Accepts a maximum of `1000` events per request.<br><br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `150/m`


        **Scopes:**

        `events:write`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/EventsBulkCreateQuery'
      responses:
        '202':
          description: Success
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-operation-aliases:
      - create_client_event_bulk_create
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 10/s
        steady: 150/m
      x-klaviyo-scopes:
      - events:write
  /client/back-in-stock-subscriptions:
    post:
      operationId: create_client_back_in_stock_subscription
      summary: Create Client Back In Stock Subscription
      description: 'Subscribe a profile to receive back in stock notifications. Check out [our Back in Stock API guide](https://developers.klaviyo.com/en/docs/how_to_set_up_custom_back_in_stock) for more details.


        This endpoint is specifically designed to be called from publicly-browseable, client-side environments only and requires a [public API key (site ID)](https://www.klaviyo.com/settings/account/api-keys). Never use a private API key with our client-side endpoints.


        Do not use this endpoint from server-side applications.

        To create back in stock subscriptions from server-side applications, instead use [POST /api/back-in-stock-subscriptions](https://developers.klaviyo.com/en/reference/create_back_in_stock_subscription).<br><br>*Rate limits*:<br>Burst: `350/s`<br>Steady: `3500/m`


        **Scopes:**

        `catalogs:write`

        `profiles:write`'
      parameters:
      - name: company_id
        in: query
        description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
        required: true
        schema:
          description: Your Public API Key / Site ID. See [this article](https://help.klaviyo.com/hc/en-us/articles/115005062267) for more details.
          type: string
          example: PUBLIC_API_KEY
      - name: revision
        in: header
        description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
        required: true
        schema:
          type: string
          default: '2026-04-15'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/ClientBISSubscriptionCreateQuery'
      responses:
        '202':
          description: Success
        4XX:
          $ref: '#/components/responses/ClientError'
        5XX:
          $ref: '#/components/responses/ServerError'
      security: []
      tags:
      - Client
      x-klaviyo-pre-release: None
      x-klaviyo-ratelimit:
        burst: 350/s
        steady: 3500/m
      x-klaviyo-scopes:
      - catalogs:write
      - profiles:write
components:
  schemas:
    SMSSubscriptionParameters:
      type: object
      properties:
        marketing:
          description: The parameters to subscribe to marketing on the "SMS" Channel.
          $ref: '#/components/schemas/SubscriptionParameters'
        transactional:
          description: The parameters to subscribe to transactional messaging on the "SMS" Channel.
          $ref: '#/components/schemas/SubscriptionParameters'
    GroupingCompany:
      type: object
      properties:
        company_id:
          description: The ID of the company
          type: string
          example: '67890'
      required:
      - company_id
    ReviewCreateDTO:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ReviewCreateDTOResourceObject'
      required:
      - data
    ReviewStatusUnpublished:
      type: object
      properties:
        value:
          description: Unpublished review status
          type: string
          enum:
          - unpublished
      required:
      - value
    ReviewProductExternalId:
      type: object
      properties:
        external_id:
          description: The external ID of the product
          type: string
          example: '7549950034135'
        integration_key:
          description: The integration key of the product in lowercase
          type: string
          example: shopify
          enum:
          - shopify
          - woocommerce
      required:
      - external_id
      - integration_key
    EventBulkCreateEnum:
      type: string
      enum:
      - event-bulk-create
    PatchIdentifiers:
      type: object
      properties:
        append:
          type: object
        unappend:
          type: object
    ReviewEnum:
      type: string
      enum:
      - review
    ProfileMetaPatchProperties:
      type: object
      properties:
        append:
          description: Append a simple value or values to this property array
          type:
          - object
          - 'null'
          example:
            skus: '92538'
        unappend:
          description: Remove a simple value or values from this property array
          type:
          - object
          - 'null'
          example:
            skus: '40571'
        unset:
          description: Remove a key or keys (and their values) completely from properties
          example: skus
          oneOf:
          - type: string
          - type: array
            items:
              type: string
    ListEnum:
      type: string
      enum:
      - list
    OnsiteProfileCreateQuery:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/OnsiteProfileCreateQueryResourceObject'
      required:
      - data
    PushTokenCreateQueryResourceObject:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PushTokenEnum'
        attributes:
          type: object
          properties:
            token:
              description: A push token from APNS or FCM.
              type: string
              example: '1234567890'
            platform:
              description: The platform on which the push token was created.
              type: string
              enum:
              - android
              - ios
            enablement_status:


# --- truncated at 32 KB (96 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/klaviyo/refs/heads/main/openapi/klaviyo-client-api-openapi.yml