Anrok Products API

The Anrok Products API endpoints allow you to manage the products on your seller account. Each product is identified by an external ID and is assigned a product tax category (PTC) which determines the product's taxability in each jurisdiction. PTCs may be one of Anrok's standard PTCs or a custom PTC that has been created on your seller account.

Operations 4

POST /v1/seller/products/create Create product #
POST /v1/seller/products/externalId:{externalId}/get Get product #
POST /v1/seller/products/list List products #
POST /v1/seller/productTaxCategories/list List product tax categories #

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/anrok:anrok-products-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

anrok-products-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Anrok Products API
  version: '1.1'
  termsOfService: https://www.anrok.com/privacy-terms
  contact:
    email: support@anrok.com
  license:
    name: All rights reserved
    url: https://www.anrok.com
  x-logo:
    url: https://global-uploads.webflow.com/632add85afcd1ac30aa74675/6357842d130e1f3e0e23d1fe_anrok_logo.svg
  description: '# API reference


    The Anrok API server is accessible at `https://api.anrok.com`.


    All requests are HTTP POSTs with JSON in the body.


    Authentication is via an HTTP header `Authorization: Bearer {apiKey}`.


    The default rate limit for a seller account is 10 API requests per second.'
servers:
- url: https://api.anrok.com
security:
- http: []
tags:
- name: Products
  description: 'The Anrok Products API endpoints allow you to manage the products on your seller

    account. Each product is identified by an external ID and is assigned a product tax category

    (PTC) which determines the product''s taxability in each jurisdiction.

    PTCs may be one of Anrok''s standard PTCs or a custom PTC that has been created on your seller account.'
paths:
  /v1/seller/products/create:
    post:
      tags:
      - Products
      summary: Create product
      description: Creates a new product in Anrok, given a unique external ID and a product tax category (PTC) which determines the product's taxability in each jurisdiction.
      operationId: productsCreate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProduct'
            example:
              externalId: sku-1001
              taxCategoryId:
                type: standard
                id: saasBusiness
              name: Pro plan
              description: Monthly subscription to the Pro plan.
        required: true
      responses:
        '200':
          $ref: '#/components/responses/EmptyResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: string
              examples:
                missingRequiredProperty:
                  value: 'Request body: "externalId": Required.'
                  summary: Missing required property
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                    - externalIdAlreadyExists
                    - externalIdInvalid
                    - taxCategoryIdNotFound
                  message:
                    description: When `type` is `externalIdInvalid`, a human-readable message describing why the external ID is invalid.
                    type: string
                required:
                - type
              example:
                type: externalIdAlreadyExists
        '429':
          $ref: '#/components/responses/RateLimit'
  /v1/seller/products/externalId:{externalId}/get:
    parameters:
    - $ref: '#/components/parameters/ProductExternalId'
    post:
      tags:
      - Products
      summary: Get product
      description: Looks up a product in Anrok by its external ID. Returns the product's external ID, tax category, name, and description.
      operationId: productsGet
      requestBody:
        $ref: '#/components/requestBodies/Empty'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  externalId:
                    description: The product's external ID.
                    type: string
                    examples:
                    - sku-1001
                  taxCategoryId:
                    description: The identifier for the product's product tax category (PTC).
                    $ref: '#/components/schemas/ProductTaxCategoryId'
                  name:
                    description: The product's display name.
                    type: string
                    examples:
                    - Pro plan
                  description:
                    description: The product's description. Empty string if no description has been set.
                    type: string
                    examples:
                    - Monthly subscription to the Pro plan.
                required:
                - externalId
                - taxCategoryId
                - name
                - description
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                    - productExternalIdNotFound
              example:
                type: productExternalIdNotFound
        '429':
          $ref: '#/components/responses/RateLimit'
  /v1/seller/products/list:
    post:
      tags:
      - Products
      summary: List products
      description: Lists the products on your seller account, in descending order of creation time.
      operationId: productsList
      requestBody:
        $ref: '#/components/requestBodies/ListProducts'
      responses:
        '200':
          $ref: '#/components/responses/ListProductsSuccess'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: string
              examples:
                invalidLimitProvided:
                  value: 'Request body: "limit": Number must be less than or equal to 1000.'
                  summary: Invalid limit
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                    - invalidCursor
              example:
                type: invalidCursor
        '429':
          $ref: '#/components/responses/RateLimit'
  /v1/seller/productTaxCategories/list:
    post:
      tags:
      - Products
      summary: List product tax categories
      description: Lists all product tax categories (PTCs) that are available on the seller account. This includes the standard PTCs that Anrok has enabled for the seller as well as any custom PTCs that have been created on the seller account. The returned IDs may be used as the `taxCategoryId` when creating a product.
      operationId: productTaxCategoriesList
      requestBody:
        $ref: '#/components/requestBodies/Empty'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  productTaxCategories:
                    description: The list of all available product tax categories.
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          $ref: '#/components/schemas/ProductTaxCategoryId'
                        name:
                          description: The display name of the product tax category.
                          type: string
                          examples:
                          - SaaS - General, B2B
                      required:
                      - id
                      - name
                required:
                - productTaxCategories
              example:
                productTaxCategories:
                - id:
                    type: standard
                    id: saasBusiness
                  name: SaaS - General, B2B
                - id:
                    type: custom
                    id: sptc95hf85bdcd
                  name: Custom Professional Services
        '429':
          $ref: '#/components/responses/RateLimit'
components:
  responses:
    RateLimit:
      description: Too Many Requests
      headers:
        Retry-After:
          description: Number of seconds to wait for rate limit to reset.
          schema:
            type: integer
      content:
        text/plain:
          schema:
            type: string
          example: You've exceeded your API limit of 10 per second
    ListProductsSuccess:
      description: OK
      content:
        application/json:
          schema:
            type: object
            properties:
              products:
                description: The list of products, in descending order of creation time (`createdTime`).
                type: array
                items:
                  $ref: '#/components/schemas/ProductResponse'
              nextCursor:
                description: The cursor to use to fetch the next page of results. Null if there are no more pages.
                type:
                - string
                - 'null'
                examples:
                - eyJleGFtcGxlIjoidGhpcyBpcyBhbiBleGFtcGxlIGN1cnNvciJ9
              hasMore:
                description: Whether there are more products available beyond this page.
                type: boolean
            required:
            - products
            - nextCursor
            - hasMore
          example:
            products:
            - name: Default (Stripe)
              description: ''
              taxCategoryId:
                type: standard
                id: digitalGoodsPermanentBusiness
              taxCategoryName: Digital goods, Permanent use, B2B
              createdTime: '2026-06-24T23:36:07.122Z'
              productType: default
              defaultForSellerIntegrationId: si445fn945z5
              defaultForLineItemType: product
            - name: Acme Enterprise
              description: Premium Acme offering for enterprise customers
              taxCategoryId:
                type: standard
                id: saasBusiness
              taxCategoryName: SaaS - General, B2B
              createdTime: '2026-06-04T00:00:00.000Z'
              productType: regular
              externalId: ENT1
            nextCursor: null
            hasMore: false
    EmptyResponse:
      description: OK
      content:
        application/json:
          schema:
            type: object
          example: {}
  parameters:
    ProductExternalId:
      name: externalId
      in: path
      description: The external ID of the product.
      required: true
      schema:
        type: string
  schemas:
    ProductTaxCategoryId:
      description: Identifier for a product tax category (PTC), consisting of a `type` and `id`. A PTC may be one of the standard PTCs that Anrok provides or a custom PTC that has been created on your seller account.
      type: object
      properties:
        type:
          description: Whether this PTC is one of Anrok's standard PTCs or a custom PTC defined on your seller account.
          type: string
          enum:
          - standard
          - custom
        id:
          description: The ID of the PTC. For a standard PTC, this is an Anrok internal identifier (for example, `saasBusiness`). For a custom PTC, this is the ID assigned when the PTC was created on the seller account.
          type: string
          examples:
          - saasBusiness
          - sptc95hf85bdcd
      required:
      - type
      - id
    RegularProduct:
      description: A regular product, created in your Anrok account and identified by an external ID.
      allOf:
      - $ref: '#/components/schemas/ProductBase'
      - type: object
        properties:
          productType:
            type: string
            const: regular
          externalId:
            description: Your unique external ID for the product.
            type: string
            examples:
            - ENT1
        required:
        - externalId
    ProductBase:
      type: object
      properties:
        name:
          description: The product's display name.
          type: string
          examples:
          - Acme Enterprise
        description:
          description: The product's description. Empty string if no description has been set.
          type: string
          examples:
          - Premium Acme offering for enterprise customers
        taxCategoryId:
          description: The identifier for the product's product tax category (PTC).
          $ref: '#/components/schemas/ProductTaxCategoryId'
        taxCategoryName:
          description: The display name of the product's product tax category (PTC).
          type: string
          examples:
          - SaaS - General, B2B
        createdTime:
          description: The time at which the product was created in Anrok.
          type: string
          format: date-time
          examples:
          - '2026-06-04T00:00:00.000Z'
        productType:
          description: The type of product. A `regular` product corresponds to a product from your billing system with an external ID. A `default` product is assigned to transactions from an integration with line items whose external ID is not configured in Anrok.
          type: string
          enum:
          - regular
          - default
      required:
      - name
      - description
      - taxCategoryId
      - taxCategoryName
      - createdTime
      - productType
    DefaultProduct:
      description: A default product is assigned to transactions from an integration with line items whose external ID is not configured in Anrok. Default products are only returned when `includeDefaultProducts` is `true` in the request.
      allOf:
      - $ref: '#/components/schemas/ProductBase'
      - type: object
        properties:
          productType:
            type: string
            const: default
          defaultForSellerIntegrationId:
            description: The ID of the integration that this default product belongs to.
            type: string
            examples:
            - si445fn945z5
          defaultForLineItemType:
            description: The line item type that this default product applies to (either `product` or `shipping`).
            type: string
            enum:
            - product
            - shipping
            examples:
            - product
        required:
        - defaultForSellerIntegrationId
        - defaultForLineItemType
    ProductResponse:
      description: A product in your Anrok account. The shape depends on `productType`. `regular` products include an `externalId`; `default` products include `defaultForSellerIntegrationId` and `defaultForLineItemType`.
      oneOf:
      - $ref: '#/components/schemas/RegularProduct'
      - $ref: '#/components/schemas/DefaultProduct'
      discriminator:
        propertyName: productType
        mapping:
          regular: '#/components/schemas/RegularProduct'
          default: '#/components/schemas/DefaultProduct'
    CreateProduct:
      type: object
      properties:
        externalId:
          description: Your unique identifier for this product. The external ID may contain only alphanumeric characters, spaces, and `.-_:`. It must not contain leading or trailing spaces or consecutive spaces.
          type: string
          examples:
          - sku-1001
        taxCategoryId:
          description: Identifier for the product tax category (PTC), consisting of a `type` and `id`, to assign to this product. A PTC may be one of the standard PTCs that Anrok provides or a custom PTC that has been created on your seller account. Use the [List product tax categories endpoint](#tag/Products/operation/productTaxCategoriesList) to list the PTCs that are available on your seller account.
          $ref: '#/components/schemas/ProductTaxCategoryId'
        name:
          description: The product's display name.
          type: string
          examples:
          - Pro plan
        description:
          description: Optional description of the product.
          type:
          - string
          - 'null'
          examples:
          - Monthly subscription to the Pro plan.
      required:
      - externalId
      - taxCategoryId
      - name
  requestBodies:
    ListProducts:
      content:
        application/json:
          schema:
            type: object
            properties:
              limit:
                description: The maximum number of products to return.
                type: integer
                format: int32
                minimum: 1
                maximum: 1000
                default: 100
              cursor:
                description: The cursor to use for pagination. This is the value of the `nextCursor` field returned from the previous page.
                type: string
                example: eyJleGFtcGxlIjoidGhpcyBpcyBhbiBleGFtcGxlIGN1cnNvciJ9
              includeDefaultProducts:
                description: Whether to include default products and default shipping products from any integrations in the response. When `false`, only regular products are returned.
                type: boolean
                default: false
          examples:
            firstPage:
              summary: List products from the beginning
              value: {}
            cursor:
              summary: Cursor-based pagination
              value:
                cursor: eyJleGFtcGxlIjoidGhpcyBpcyBhbiBleGFtcGxlIGN1cnNvciJ9
                limit: 5
            includeDefaultProducts:
              summary: Include default products from integrations
              value:
                includeDefaultProducts: true
      required: true
    Empty:
      content:
        application/json:
          schema:
            type: object
          examples:
            emptyExample:
              value: {}
              summary: Empty request body
      required: true
  securitySchemes:
    http:
      type: http
      description: 'The Anrok API uses API keys to authenticate requests. You can view and manage your API keys in [Anrok](https://app.anrok.com/-/api-keys). Use an Authorization header in the format `Bearer {apiKey}` to authenticate Anrok API requests.

        '
      scheme: Bearer
externalDocs:
  description: API Tutorials
  url: https://apidocs.anrok.com/tutorials
x-provenance:
  method: harvested
  publisher: Anrok
  source: https://apidocs.anrok.com/openapi.yaml
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)