OK Capsule Pack Builder Categories Products API

The Pack Builder Categories Products API from OK Capsule — 4 operation(s) for pack builder categories products.

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/ok-capsule-pack-builder-categories-products-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

ok-capsule-pack-builder-categories-products-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: '## Overview


    The OK Capsule API enables you to programmatically create supplement orders, manage consumers, and track shipments. It is a REST API that accepts JSON requests, returns JSON responses, and uses standard HTTP methods and status codes.


    **All requests must be made over HTTPS.**


    📚 **Additional Resources:** [Getting Started Guide](https://docs.okcapsule.app/docs/getting-started) | [Recipes & Examples](https://docs.okcapsule.app/docs/category/recipes)


    ## Getting Started


    > **New to OK Capsule API?** Account and brand setup must be completed before contacting OK Capsule about API credentials. If you have not set up your account and brand yet, start with the [Getting Started Guide](https://docs.okcapsule.app/docs/getting-started) before proceeding.


    1. **Set up your account** - Your OK Capsule account must be created and active

    2. **Set up your brand** - At least one Product Line must be configured in your account

    3. **Contact OK Capsule about API credentials** - Reach out to your OK Capsule representative once account and brand setup are complete

    4. **Authenticate** - POST to `/v2/authentication/token` to get an access token

    5. **List products** - GET `/v2/products` to see available supplements

    6. **Create an order** - POST to `/v2/orders` with consumer and product details

    7. **Track fulfillment** - Monitor order status and shipping via `/v2/orders` and `/v2/fulfillments`


    ## Environments


    | Environment | Purpose | Notes |

    |-------------|---------|-------|

    | **Production** | Live orders | Real fulfillment and shipping |

    | **Stage** | Testing | Test data only, no real shipments |


    ⚠️ Users and data are environment-specific. Stage credentials do not work in Production.


    ## Core Concepts


    | Term | Route | Description |

    |------|-------|-------------|

    | **Client** | `/v2/clients` | Your organization (business partner submitting orders) |

    | **Consumer** | `/v2/consumers` | Your end customer who receives supplements |

    | **Product** | `/v2/products` | A client-specific instance of an OKC Product with custom branding |

    | **Order** | `/v2/orders` | A request to fulfill supplements for a consumer |

    | **Order Line** | — | A set of pouches within an order (e.g., 30-day supply) |

    | **Pouch** | — | An individual daily packet of supplements |

    | **Fulfillment** | `/v2/fulfillments` | Shipping, tracking, and delivery information for an order |

    | **Assembly** | `/v2/assemblies` | A client''s predefined bundle of products (commonly called a "pack") |

    | **Product Line** | `/v2/product-lines` | A client''s marketing brand (appears on packaging) |

    | **OKC Product** | — | A supplement in the OK Capsule master catalog (what OKC purchases from vendors) |

    | **User** | `/v2/users` | An authorized person who accesses the API or portal |

    | **Contact** | `/v2/contacts` | A person associated with a client, managed for communication purposes |'
  version: 2.0.0
  title: OKC core API V2 Pack Builder Categories Products API
  contact:
    name: Engineering Department, OKCapsule
    email: lukas@okcapsule.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- description: Production environment
  url: https://na1-prod.okcapsule.app
- description: Stage/Testing environment
  url: https://na1-stage.okcapsule.app
tags:
- name: Pack Builder Categories Products
paths:
  /v2/pack-builders/{id}/categories/{categoryId}/bulk-add-products:
    post:
      tags:
      - Pack Builder Categories Products
      security:
      - bearerAuth: []
      summary: Add multiple client products to pack builder category
      operationId: createMultiplePackBuilderCategoryProduct
      description: Add multiple Client Products to Pack Builder Category.
      parameters:
      - $ref: '#/components/parameters/IdParameter'
      - in: path
        name: categoryId
        required: true
        schema:
          type: string
          minimum: 1
      - in: query
        name: q
        description: For internal users only. Use Query DSL *query_string* syntax to send client id.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - client_products
              description: Add multiple products to a pack builder category with positions
              properties:
                client_products:
                  type: array
                  description: Array of products with positions
                  items:
                    type: object
                    required:
                    - client_product_id
                    - position
                    properties:
                      client_product_id:
                        type: string
                        format: uuid
                        example: e640d058-ecda-4f48-ba2f-c0a59804f36f
                      position:
                        type: integer
                        minimum: 0
                        example: 0
              example:
                client_products:
                - client_product_id: e640d058-ecda-4f48-ba2f-c0a59804f36f
                  position: 0
                - client_product_id: 3ab920e6-9d59-4f33-aea0-5045f726dafb
                  position: 1
              x-examples:
                add-products:
                  summary: Add multiple products with positions
                  value:
                    client_products:
                    - client_product_id: e640d058-ecda-4f48-ba2f-c0a59804f36f
                      position: 0
                    - client_product_id: 3ab920e6-9d59-4f33-aea0-5045f726dafb
                      position: 1
                    - client_product_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                      position: 2
            examples:
              PackBuilderMultipleAddProductsCategorySample:
                $ref: '#/components/examples/PackBuilderMultipleAddProductsCategorySample'
              PackBuilderMultipleAddSingleProductSample:
                $ref: '#/components/examples/PackBuilderMultipleAddSingleProductCategorySample'
      responses:
        '201':
          description: Returns an added SyncProcess object.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/SyncProcessResponse'
        '422':
          $ref: '#/components/responses/422ValidationError'
        default:
          $ref: '#/components/responses/UnknownError'
  /v2/pack-builders/{id}/categories/{categoryId}/products:
    post:
      tags:
      - Pack Builder Categories Products
      security:
      - bearerAuth: []
      summary: Add a client product to category
      operationId: createPackBuildersCategoriesProducts
      description: 'Add a client product to category.

        '
      parameters:
      - $ref: '#/components/parameters/IdParameter'
      - in: path
        name: categoryId
        required: true
        schema:
          type: string
          minimum: 1
      - in: query
        name: q
        description: For internal users only. Use Query DSL *query_string* syntax to send client id.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - client_product_id
              - position
              description: Add a product to a pack builder category with position
              properties:
                client_product_id:
                  type: string
                  format: uuid
                  description: ID of the client product to add
                  example: 6d28a691-1d4c-48fb-8c18-23e3557b1e05
                position:
                  type: integer
                  minimum: 0
                  description: Display order position within the category
                  example: 0
              example:
                client_product_id: 6d28a691-1d4c-48fb-8c18-23e3557b1e05
                position: 0
            examples:
              PackBuilderCategorySample:
                $ref: '#/components/examples/PackBuilderCategoryProductsSample'
      responses:
        '201':
          description: Returns an added Client Product to Category object.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pack_builder_categories_product:
                    $ref: '#/components/schemas/PackBuilderCategoriesClientProduct'
        '422':
          $ref: '#/components/responses/422ValidationError'
        default:
          $ref: '#/components/responses/UnknownError'
  /v2/pack-builders/{id}/categories/products:
    get:
      tags:
      - Pack Builder Categories Products
      security:
      - bearerAuth: []
      summary: List all pack builder categories and products attached to them
      operationId: listPackBuildersCategoriesProducts
      description: 'List all pack builder categories and products attached to them.

        '
      parameters:
      - $ref: '#/components/parameters/IdParameter'
      responses:
        '200':
          description: Search results matching criteria
          content:
            application/json:
              schema:
                type: object
                required:
                - pack_builder_categories_products
                properties:
                  pack_builder_categories_products:
                    type: array
                    items:
                      $ref: '#/components/schemas/PackBuilderCategoriesClientProducts'
        default:
          $ref: '#/components/responses/UnknownError'
  /v2/pack-builders/{id}/categories/{categoryId}/products/{productId}:
    put:
      tags:
      - Pack Builder Categories Products
      security:
      - bearerAuth: []
      summary: Update a client product attached to category
      operationId: updatePackBuilderCategoryProduct
      description: Update a client product attached to category.
      parameters:
      - $ref: '#/components/parameters/IdParameter'
      - in: path
        name: categoryId
        required: true
        schema:
          type: string
          minimum: 1
      - in: path
        name: productId
        required: true
        schema:
          type: string
          minimum: 1
      - in: query
        name: q
        description: For internal users only. Use Query DSL *query_string* syntax to send client id.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - position
              description: Update a product's position within a pack builder category
              properties:
                position:
                  type: integer
                  minimum: 0
                  description: New display order position
                  example: 3
              example:
                position: 3
      responses:
        '200':
          description: Returns the updated PackBuilderCategoryProduct object.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pack_builder_categories_product:
                    $ref: '#/components/schemas/PackBuilderCategoriesClientProduct'
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Validation error response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorModel'
          description: Error response.
    delete:
      tags:
      - Pack Builder Categories Products
      security:
      - bearerAuth: []
      summary: Delete a category belongs to pack builder
      operationId: deletePackBuilderCategory
      description: Delete a category belongs to pack builder.
      parameters:
      - $ref: '#/components/parameters/IdParameter'
      - in: path
        name: categoryId
        required: true
        schema:
          type: string
          minimum: 1
      - in: path
        name: productId
        required: true
        schema:
          type: string
          minimum: 1
      - in: query
        name: q
        description: For internal users only. Use Query DSL *query_string* syntax to send client id.
        schema:
          type: string
      responses:
        '204':
          $ref: '#/components/responses/204ConfirmDeletion'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorModel'
          description: Error response.
components:
  responses:
    422ValidationError:
      description: Validation error response.
      content:
        application/json:
          schema:
            type: object
            title: Validation Error
            required:
            - message
            - errors
            description: A validation error response from the OK Capsule API (Joi validation)
            properties:
              message:
                description: A human-readable message indicating a validation error occurred.
                maxLength: 40000
                type: string
                example: Validation error
              errors:
                description: An array of validation errors from Joi schema validation
                type: array
                items:
                  type: object
                  required:
                  - message
                  - type
                  properties:
                    message:
                      description: A human-readable message providing more details about the validation error.
                      type: string
                      example: '''business_name'' is required'
                    type:
                      description: The Joi validation type that failed.
                      type: string
                      example: any.required
    204ConfirmDeletion:
      description: Confirms resource deletion.
    UnknownError:
      description: Error response.
      content:
        application/json:
          schema:
            title: Error Model
            description: An error response from the OK Capsule API
            type: object
            properties:
              error:
                title: Error Model Content
                type: object
                description: Error details object
                required:
                - message
                properties:
                  errorCode:
                    description: For some errors that could be handled programmatically, a short string indicating the error code.
                    maxLength: 5000
                    type: string
                    example: RESOURCE_NOT_FOUND
                  message:
                    description: A human-readable message providing more details about the error.
                    maxLength: 40000
                    type: string
                    example: The requested resource was not found
              message:
                description: Top-level error message (present in some error responses)
                type: string
                example: Internal Server Error
            required:
            - error
  schemas:
    ValidationError:
      type: object
      title: Validation Error
      required:
      - message
      - errors
      description: A validation error response from the OK Capsule API (Joi validation)
      properties:
        message:
          description: A human-readable message indicating a validation error occurred.
          maxLength: 40000
          type: string
          example: Validation error
        errors:
          description: An array of validation errors from Joi schema validation
          type: array
          items:
            type: object
            required:
            - message
            - type
            properties:
              message:
                description: A human-readable message providing more details about the validation error.
                type: string
                example: '''business_name'' is required'
              type:
                description: The Joi validation type that failed.
                type: string
                example: any.required
    PackBuilderCategoriesClientProducts:
      allOf:
      - type: object
        required:
        - id
        - client_id
        - category_name
        - products
        properties:
          id:
            type: string
            format: uuid
            example: d68bc04b-5261-4055-9c64-c81e4cbb871e
          client_id:
            type: string
            format: uuid
            example: 29f24a23-68dd-41bb-9aba-f958c10c7d39
          category_name:
            type: string
            example: Energy
          position:
            type: number
            example: 1
          products:
            type: array
            items:
              type: object
              required:
              - id
              - product_line_id
              - name
              - product_name
              properties:
                id:
                  type: string
                  format: uuid
                  example: 3ab920e6-9d59-4f33-aea0-5045f726dafb
                product_line_id:
                  type: string
                  format: uuid
                  example: 3ab920e6-9d59-4f33-aea0-5045f726dafb
                name:
                  type: string
                  example: SP-0084
                product_name:
                  type: string
                  example: Vegan Women's pack (energy+joint)
                position:
                  type: number
                  example: 2
      - type: object
        required:
        - created_at
        - updated_at
        properties:
          created_at:
            type: string
            format: date-time
            readOnly: true
            example: '2023-03-20T09:12:28Z'
          updated_at:
            type: string
            format: date-time
            readOnly: true
            example: '2023-03-20T09:12:28Z'
    SyncProcessResponse:
      allOf:
      - type: object
        properties:
          sync_process_id:
            type: string
            format: uuid
            example: a390f1ab-6c54-4b01-90e6-d701748f1837
    ErrorModel:
      title: Error Model
      description: An error response from the OK Capsule API
      type: object
      properties:
        error:
          title: Error Model Content
          type: object
          description: Error details object
          required:
          - message
          properties:
            errorCode:
              description: For some errors that could be handled programmatically, a short string indicating the error code.
              maxLength: 5000
              type: string
              example: RESOURCE_NOT_FOUND
            message:
              description: A human-readable message providing more details about the error.
              maxLength: 40000
              type: string
              example: The requested resource was not found
        message:
          description: Top-level error message (present in some error responses)
          type: string
          example: Internal Server Error
      required:
      - error
    PackBuilderCategoriesClientProduct:
      allOf:
      - type: object
        required:
        - category_id
        - client_product_id
        - client_product_position
        - client_product
        properties:
          category_id:
            type: string
            format: uuid
            example: d68bc04b-5261-4055-9c64-c81e4cbb871e
          client_product_id:
            type: string
            format: uuid
            example: 29f24a23-68dd-41bb-9aba-f958c10c7d39
          client_product_position:
            type: number
            example: 2
          client_product:
            type: object
            required:
            - id
            - product_line_id
            - name
            - product_name
            properties:
              id:
                type: string
                format: uuid
                example: 3ab920e6-9d59-4f33-aea0-5045f726dafb
              product_line_id:
                type: string
                format: uuid
                example: 3ab920e6-9d59-4f33-aea0-5045f726dafb
              name:
                type: string
                example: SP-0084
              product_name:
                type: string
                example: Vegan Women's pack (energy+joint)
              position:
                type: number
                example: 2
  examples:
    PackBuilderMultipleAddProductsCategorySample:
      summary: Add multiple client products.
      value:
        client_products:
        - client_product_id: d290f1ee-6c54-4b01-90e6-d701748f0851
          position: 2
        - client_product_id: e640d058-ecda-4f48-ba2f-c0a59804f36f
          position: 1
        - client_product_id: a390f1ab-6c54-4b01-90e6-d701748f1837
          position: 3
    PackBuilderCategoryProductsSample:
      summary: Add a client product to category
      value:
        client_product_id: 6d28a691-1d4c-48fb-8c18-23e3557b1e05
        position: 2
    PackBuilderMultipleAddSingleProductCategorySample:
      summary: Add single client product.
      value:
        client_products:
        - client_product_id: d290f1ee-6c54-4b01-90e6-d701748f0851
          position: 2
  parameters:
    IdParameter:
      in: path
      name: id
      required: true
      schema:
        type: string
        minimum: 1
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT