Operations 6
Documentation
Documentation
https://docs.okcapsule.app/docs/
APIReference
https://api2-docs.okcapsule.app/
GettingStarted
https://docs.okcapsule.app/docs/getting-started
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/ok-capsule-products-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
description: '## Overview
The OK Capsule API enables you to programmatically create supplement orders, manage consumers, and track shipments.'
version: 2.0.0
title: OKC core API V2 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: Products
description: Routes to manage client products
paths:
/v2/products:
post:
tags:
- Products
security:
- bearerAuth:
- products/write
summary: Creates a client product
operationId: createProduct
description: Creates a client product.
parameters:
- 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:
- product_line_id
- okc_product_id
- product_name
- active
- price_per_pill
- short_description
properties:
okc_product_id:
type: string
format: uuid
example: d290f1ee-6c54-4b01-90e6-d701748f0851
product_line_id:
type: string
format: uuid
example: d290f1ee-6c54-4b01-90e6-d701748f0851
client_custom_product_id:
type: string
client_sku:
type: string
client_upc:
type: string
name:
type:
- string
- 'null'
description: Internal name for the client product (optional).
active:
type: boolean
price_per_pill:
type: number
description: Required for validation but filtered out for client users (internal use only).
serving_size:
type: integer
time_of_administration:
type: string
long_description:
type: string
product_name:
type: string
maxLength: 27
short_description:
type: string
key_points:
type: string
example: Supports immune health
custom_text_1:
type: string
example: Custom field 1
custom_text_2:
type: string
example: Custom field 2
custom_text_3:
type: string
example: Custom field 3
inventory_available:
type: number
description: Available inventory count
example: 1000
sfp_version:
type: string
example: v2
maxLength: 5
packaging_asset_group_id:
type: string
format: uuid
example: c6de9100-e8b2-4032-80e2-3743deda83d2
x-internal: true
description: This field is for internal use only.
protocol_id:
type: string
format: uuid
example: f4e5d6c7-b8a9-0c1d-2e3f-4a5b6c7d8e9f
product_assembly_type:
type: string
enum:
- PRODUCT
- ASSEMBLY
- SET
example: PRODUCT
price_per_unit:
type:
- number
- 'null'
format: decimal
example: 1.25
description: Price per individual unit of this product.
is_standalone_kit:
type: boolean
default: false
example: false
description: Indicates this client product is a standalone kit.
crm_id:
type: string
x-internal: true
description: This field is for internal use only.
examples:
PartialSample:
$ref: '#/components/examples/ProductFullSample'
CompleteSample:
$ref: '#/components/examples/ProductSample'
responses:
'201':
description: Returns a created product.
content:
application/json:
schema:
type: object
properties:
products:
$ref: '#/components/schemas/Product'
'422':
$ref: '#/components/responses/422ValidationError'
default:
$ref: '#/components/responses/UnknownError'
get:
tags:
- Products
security:
- bearerAuth:
- products/read
summary: List products
operationId: listProducts
description: 'List products.
Filterable fields:
* client_custom_product_id
* client_sku
* client_upc
* name
* active
* product_name
* product_assembly_type
* crm_id
* okcProduct.product_family
Sortable fields:
* product_name'
parameters:
- $ref: '#/components/parameters/LimitParameters'
- $ref: '#/components/parameters/CursorParameters'
- $ref: '#/components/parameters/SortByParameters'
- $ref: '#/components/parameters/QueryParameters'
responses:
'200':
description: search results matching criteria
content:
application/json:
schema:
type: object
properties:
products:
type: array
items:
$ref: '#/components/schemas/Product'
default:
$ref: '#/components/responses/UnknownError'
/v2/products/count:
get:
tags:
- Products
security:
- bearerAuth:
- products/read
summary: Count of all products
operationId: getProductTotalCount
description: 'Count of all products.
Filterable fields:
* client_custom_product_id
* client_sku
* client_upc
* name
* active
* product_name
* product_assembly_type
* crm_id
* okcProduct.product_family'
parameters:
- $ref: '#/components/parameters/QueryParameters'
responses:
'200':
description: Search results matching criteria
content:
application/json:
schema:
type: object
$ref: '#/components/schemas/Count'
default:
$ref: '#/components/responses/UnknownError'
/v2/products/{id}:
get:
tags:
- Products
security:
- bearerAuth:
- products/read
summary: Retrieve a product
operationId: getProduct
description: Retrieve a product.
parameters:
- $ref: '#/components/parameters/IdParameter'
- in: query
name: q
description: For internal users only. Use Query DSL *query_string* syntax to send client id.
schema:
type: string
responses:
'200':
description: Returns a product for a valid identifier.
content:
application/json:
schema:
type: object
properties:
product:
$ref: '#/components/schemas/Product'
default:
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
description: Error response.
put:
tags:
- Products
security:
- bearerAuth:
- products/write
summary: Update a product
operationId: updateProduct
description: Update a product.
parameters:
- $ref: '#/components/parameters/IdParameter'
- 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
properties:
okc_product_id:
type: string
format: uuid
example: d290f1ee-6c54-4b01-90e6-d701748f0851
product_line_id:
type: string
format: uuid
example: d290f1ee-6c54-4b01-90e6-d701748f0851
client_custom_product_id:
type: string
client_sku:
type: string
client_upc:
type: string
name:
type:
- string
- 'null'
description: Internal name for the client product (optional).
active:
type: boolean
price_per_pill:
type: number
description: Filtered out for client users (internal use only).
serving_size:
type: integer
time_of_administration:
type: string
long_description:
type: string
product_name:
type: string
maxLength: 27
short_description:
type: string
key_points:
type: string
example: Supports immune health
custom_text_1:
type: string
example: Custom field 1
custom_text_2:
type: string
example: Custom field 2
custom_text_3:
type: string
example: Custom field 3
inventory_available:
type: number
description: Available inventory count
example: 1000
sfp_version:
type: string
example: v2
maxLength: 5
packaging_asset_group_id:
type: string
format: uuid
example: c6de9100-e8b2-4032-80e2-3743deda83d2
x-internal: true
description: This field is for internal use only.
protocol_id:
type: string
format: uuid
example: f4e5d6c7-b8a9-0c1d-2e3f-4a5b6c7d8e9f
product_assembly_type:
type: string
enum:
- PRODUCT
- ASSEMBLY
- SET
example: PRODUCT
price_per_unit:
type:
- number
- 'null'
format: decimal
example: 1.25
description: Price per individual unit of this product.
is_standalone_kit:
type: boolean
example: false
description: Indicates this client product is a standalone kit.
crm_id:
type: string
x-internal: true
description: This field is for internal use only.
responses:
'200':
description: Returns the updated product.
content:
application/json:
schema:
type: object
properties:
product:
$ref: '#/components/schemas/Product'
'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:
- Products
security:
- bearerAuth:
- products/write
summary: Delete a product
operationId: deleteProduct
description: Delete a a product.
parameters:
- $ref: '#/components/parameters/IdParameter'
- in: query
name: q
description: For internal users only. Use Query DSL *query_string* syntax to send client id.
schema:
type: string
responses:
'204':
description: Confirms deletion of a product.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
description: Error response.
components:
schemas:
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
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
Count:
allOf:
- type: object
properties:
count:
type: number
example: 8
Product:
allOf:
- allOf:
- 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'
- type: object
properties:
id:
type: string
format: uuid
example: d290f1ee-6c54-4b01-90e6-d701748f0851
client_id:
type: string
format: uuid
example: d290f1ee-6c54-4b01-90e6-d701748f0851
okc_product_id:
type: string
format: uuid
example: d290f1ee-6c54-4b01-90e6-d701748f0851
product_line_id:
type: string
format: uuid
example: d290f1ee-6c54-4b01-90e6-d701748f0851
client_custom_product_id:
type: string
client_sku:
type: string
client_upc:
type: string
name:
type: string
active:
type: boolean
price_per_pill:
type: number
serving_size:
type: integer
time_of_administration:
type: string
long_description:
type: string
product_name:
type: string
maxLength: 27
short_description:
type: string
key_points:
type: string
example: Supports immune health
custom_text_1:
type: string
example: Custom field 1
custom_text_2:
type: string
example: Custom field 2
custom_text_3:
type: string
example: Custom field 3
price_per_unit:
type:
- number
- 'null'
format: decimal
example: 1.25
description: Price per individual unit of this product.
is_standalone_kit:
type: boolean
default: false
example: false
description: Indicates this client product is a standalone kit.
product_assembly_type:
type: string
enum:
- PRODUCT
- ASSEMBLY
- SET
sfp_version:
type: string
example: v2
maxLength: 5
packaging_asset_group_id:
type: string
format: uuid
example: c6de9100-e8b2-4032-80e2-3743deda83d2
protocol_id:
type: string
format: uuid
example: f4e5d6c7-b8a9-0c1d-2e3f-4a5b6c7d8e9f
crm_id:
type: string
x-internal: true
description: Internal use only.
example: ABCDE12587AHSNNHS
okc_product:
type:
- object
- 'null'
properties:
id:
type: string
format: uuid
example: d290f1ee-6c54-4b01-90e6-d701748f0851
product_family:
type: string
example: Supplement - Standard
supplement_category:
type: string
example: Vitamins
- 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'
responses:
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
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
parameters:
LimitParameters:
in: query
name: limit
description: Number of results to return. Default 50, max 250.
required: false
schema:
type: integer
minimum: 1
maximum: 250
CursorParameters:
in: query
name: cursor
description: Return results before/after a specific record.
schema:
type: string
QueryParameters:
in: query
name: q
description: Use Query DSL *query_string* syntax
schema:
type: string
IdParameter:
in: path
name: id
required: true
schema:
type: string
minimum: 1
SortByParameters:
in: query
name: sort_by
description: Sort values by a specific property. See available sort by values in the table.
schema:
type: string
examples:
ProductFullSample:
summary: Creates a client product.
value:
product_line_id: a079ccd0-e612-4a0c-9342-c169e18adb4f
okc_product_id: c43097d6-ca98-41c7-9188-fb61afd807e5
client_custom_product_id: client-product-1234
long_description: 'Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam quis nostrud exercitation ullamco laboris nisi '
product_name: Calcium
time_of_administration: Morning
client_sku: sku001
client_upc: upc001
active: true
price_per_pill: 0.5
serving_size: 1
short_description: This is a short description of Product A.
crm_id: ABCD58996POI
packaging_asset_group_id: c6de9100-e8b2-4032-80e2-3743deda83d2
sfp_version: v2
ProductSample:
summary: Creates a client product with only required fields.
value:
product_line_id: a079ccd0-e612-4a0c-9342-c169e18adb4f
okc_product_id: c43097d6-ca98-41c7-9188-fb61afd807e5
product_name: Calcium
active: true
price_per_pill: 0.5
short_description: This is a short description of Product A.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT