Paid products API
The products API from Paid — 5 operation(s) for products.
The products API from Paid — 5 operation(s) for products.
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/paid-products-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Reference agents Products API
version: 1.0.0
servers:
- url: https://api.agentpaid.io/api/v1
description: Production
tags:
- name: products
paths:
/products:
get:
operationId: list
summary: List products
tags:
- products
parameters:
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: Success response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Product'
post:
operationId: create
summary: Create product
tags:
- products
parameters:
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'201':
description: Success response
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProductCreate'
/products/{productId}:
get:
operationId: get
summary: Get product by ID
tags:
- products
parameters:
- name: productId
in: path
required: true
schema:
type: string
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: Success response
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
put:
operationId: update
summary: Update product
tags:
- products
parameters:
- name: productId
in: path
required: true
schema:
type: string
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: Success response
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProductUpdate'
delete:
operationId: delete
summary: Delete product
tags:
- products
parameters:
- name: productId
in: path
required: true
schema:
type: string
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'204':
description: Success response
content:
application/json:
schema:
$ref: '#/components/schemas/products_delete_Response_204'
/products/external/{externalId}:
get:
operationId: get-by-external-id
summary: Get product by external ID
tags:
- products
parameters:
- name: externalId
in: path
required: true
schema:
type: string
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: Success response
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
put:
operationId: update-by-external-id
summary: Update product by external ID
tags:
- products
parameters:
- name: externalId
in: path
required: true
schema:
type: string
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: Success response
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProductUpdate'
delete:
operationId: delete-by-external-id
summary: Delete product by external ID
tags:
- products
parameters:
- name: externalId
in: path
required: true
schema:
type: string
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'204':
description: Success response
content:
application/json:
schema:
$ref: '#/components/schemas/products_deleteByExternalId_Response_204'
/products/:
get:
operationId: list-products
summary: List products
description: Get a list of products for the organization
tags:
- products
parameters:
- name: limit
in: query
required: false
schema:
type: integer
default: 10
- name: offset
in: query
required: false
schema:
type: integer
- name: name
in: query
description: Search by product name (case-insensitive, matches anywhere in the name).
required: false
schema:
type: string
- name: active
in: query
description: 'Filter by the product''s active flag: true or false.'
required: false
schema:
type: boolean
- name: archived
in: query
description: 'Filter by archived state: true returns only archived products, false only non-archived. Omit to include both.'
required: false
schema:
type: boolean
- name: Authorization
in: header
description: API Key authentication using Bearer token
required: true
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/ProductListResponse'
'400':
description: '400'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: '403'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: '500'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
operationId: create-product
summary: Create a new product
description: Creates a new product for the organization
tags:
- products
parameters:
- name: Authorization
in: header
description: API Key authentication using Bearer token
required: true
schema:
type: string
responses:
'201':
description: '201'
content:
application/json:
schema:
$ref: '#/components/schemas/Product_2'
'400':
description: '400'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: '403'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: '500'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
requestBody:
description: Body
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProductRequest'
/products/{id}:
get:
operationId: get-product-by-id
summary: Get product
description: Get a product by ID, including its product attributes with pricing details
tags:
- products
parameters:
- name: id
in: path
required: true
schema:
type: string
- name: Authorization
in: header
description: API Key authentication using Bearer token
required: true
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/ProductDetail'
'403':
description: '403'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: '404'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: '500'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
put:
operationId: update-product-by-id
summary: Update product
description: Update a product by ID. Optionally upsert product attributes with pricing.
tags:
- products
parameters:
- name: id
in: path
required: true
schema:
type: string
- name: Authorization
in: header
description: API Key authentication using Bearer token
required: true
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/ProductDetail'
'400':
description: '400'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: '403'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: '404'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: '500'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
requestBody:
description: Body
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProductRequest'
components:
schemas:
Pagination:
type: object
properties:
limit:
type: integer
offset:
type: integer
total:
type: integer
hasMore:
type: boolean
required:
- limit
- offset
- total
- hasMore
title: Pagination
ProductSimplePricePointTiersItemsTierBillingType:
type: string
enum:
- flat
- perUnit
title: ProductSimplePricePointTiersItemsTierBillingType
ChargeType:
type: string
enum:
- oneTime
- recurring
- usage
- seatBased
title: ChargeType
Pricing:
type: object
properties:
eventName:
type: string
taxable:
type: boolean
creditCost:
type: number
format: double
chargeType:
$ref: '#/components/schemas/ChargeType'
pricingModel:
$ref: '#/components/schemas/PricingModelType'
billingFrequency:
$ref: '#/components/schemas/BillingFrequency'
pricePoints:
type: object
additionalProperties:
$ref: '#/components/schemas/AgentPricePoint'
required:
- taxable
- chargeType
- pricingModel
- billingFrequency
- pricePoints
title: Pricing
Product:
type: object
properties:
id:
type: string
format: uuid
externalId:
type:
- string
- 'null'
displayId:
type: string
description: Human-readable display ID
organizationId:
type: string
format: uuid
name:
type: string
description:
type:
- string
- 'null'
type:
$ref: '#/components/schemas/ProductType'
description: The type of product
active:
type: boolean
productCode:
type:
- string
- 'null'
ProductAttribute:
type: array
items:
$ref: '#/components/schemas/AgentAttribute'
description: Pricing attributes for this product
metadata:
type:
- object
- 'null'
additionalProperties:
description: Any type
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
required:
- id
- organizationId
- name
- type
- active
description: A product in the Paid system (previously called Agent)
title: Product
ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsBillingType:
type: string
enum:
- Advance
- Arrears
default: Arrears
title: ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsBillingType
ProductPricingInputDiscriminatorMappingUsagePerUnitSignalType:
type: string
enum:
- activity
- outcome
title: ProductPricingInputDiscriminatorMappingUsagePerUnitSignalType
ProductCreditBenefitOutput:
type: object
properties:
id:
type: string
creditsCurrencyId:
type:
- string
- 'null'
amount:
type: number
format: double
recipient:
type: string
isInfiniteTotal:
type: boolean
allocationCadence:
type: string
creditGrantTiming:
type:
- string
- 'null'
overageUnitPrice:
type:
- number
- 'null'
format: double
rolloverAmount:
type:
- number
- 'null'
format: double
rolloverDuration:
type:
- number
- 'null'
format: double
rolloverDurationUnit:
type:
- string
- 'null'
required:
- id
- creditsCurrencyId
- amount
- recipient
- isInfiniteTotal
- allocationCadence
title: ProductCreditBenefitOutput
ProductPricingInputDiscriminatorMappingUsageVolumeBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingUsageVolumeBillingFrequency
AgentPricePoint:
type: object
properties:
unitPrice:
type: number
format: double
minQuantity:
type: number
format: double
includedQuantity:
type: number
format: double
tiers:
type: array
items:
$ref: '#/components/schemas/AgentPricePointTiers'
title: AgentPricePoint
ProductPricingInputDiscriminatorMappingRecurringVolumeBillingType:
type: string
enum:
- Advance
- Arrears
default: Advance
title: ProductPricingInputDiscriminatorMappingRecurringVolumeBillingType
ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingFrequency
ProductType:
type: string
enum:
- agent
- product
- prepaidCreditBundle
description: The type of product
title: ProductType
Product_2:
type: object
properties:
id:
type: string
name:
type: string
description:
type:
- string
- 'null'
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
active:
type: boolean
productCode:
type:
- string
- 'null'
externalId:
type:
- string
- 'null'
archivedAt:
type:
- string
- 'null'
format: date-time
metadata:
type:
- object
- 'null'
additionalProperties:
description: Any type
required:
- id
- name
- description
- createdAt
- updatedAt
- active
- productCode
- externalId
- archivedAt
- metadata
title: Product
ProductCreate:
type: object
properties:
name:
type: string
description:
type: string
externalId:
type: string
type:
$ref: '#/components/schemas/ProductCreateType'
active:
type: boolean
default: false
productCode:
type: string
metadata:
type: object
additionalProperties:
description: Any type
required:
- name
title: ProductCreate
ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsSignalType:
type: string
enum:
- activity
- outcome
title: ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsSignalType
ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsBillingType:
type: string
enum:
- Advance
- Arrears
default: Arrears
title: ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsBillingType
ProductPricingInputDiscriminatorMappingSeatBasedPrepaidCreditsBillingType:
type: string
enum:
- Advance
- Arrears
default: Advance
title: ProductPricingInputDiscriminatorMappingSeatBasedPrepaidCreditsBillingType
ProductPricingOutputPricingType:
type: string
enum:
- RecurringPerUnit
- RecurringGraduated
- RecurringVolume
- RecurringPercentOfTotal
- UsagePerUnit
- UsageGraduated
- UsageVolume
- UsagePrepaidCredits
- UsageBracketedPrepaidCredits
- UsageCostPlus
- OneTimePerUnit
- SeatBasedPerUnit
- SeatBasedGraduated
- SeatBasedVolume
- SeatBasedPrepaidCredits
title: ProductPricingOutputPricingType
ProductPricingInputDiscriminatorMappingSeatBasedPrepaidCreditsBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingSeatBasedPrepaidCreditsBillingFrequency
ProductAttributeUpsert:
type: object
properties:
productAttributeId:
type: string
format: uuid
name:
type: string
active:
type: boolean
pricing:
$ref: '#/components/schemas/ProductPricingInput'
creditBenefits:
type: array
items:
$ref: '#/components/schemas/ProductCreditBenefitInput'
required:
- name
- pricing
title: ProductAttributeUpsert
ProductPricingInputDiscriminatorMappingUsagePerUnitBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingUsagePerUnitBillingFrequency
ProductPricingInputDiscriminatorMappingSeatBasedPerUnitBillingType:
type: string
enum:
- Advance
- Arrears
default: Advance
title: ProductPricingInputDiscriminatorMappingSeatBasedPerUnitBillingType
ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsSignalType:
type: string
enum:
- activity
- outcome
title: ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsSignalType
ProductPricingInputDiscriminatorMappingUsageGraduatedBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingUsageGraduatedBillingFrequency
ProductPricingOutputSignalType:
type: string
enum:
- activity
- outcome
title: ProductPricingOutputSignalType
ProductUpdateType:
type: string
enum:
- agent
- product
- prepaidCreditBundle
title: ProductUpdateType
ProductPricingInputDiscriminatorMappingSeatBasedPerUnitBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingSeatBasedPerUnitBillingFrequency
ProductPricingInputDiscriminatorMappingSeatBasedGraduatedBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingSeatBasedGraduatedBillingFrequency
ProductCreditBenefitInputRecipient:
type: string
enum:
- organization
- seat
default: organization
title: ProductCreditBenefitInputRecipient
ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInputKind:
type: string
enum:
- signalQuantity
title: ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInputKind
ProductTieredPricePointTiersItemsTierBillingType:
type: string
enum:
- flat
- perUnit
title: ProductTieredPricePointTiersItemsTierBillingType
ProductPricingInputDiscriminatorMappingRecurringPerUnitBillingType:
type: string
enum:
- Advance
- Arrears
default: Advance
title: ProductPricingInputDiscriminatorMappingRecurringPerUnitBillingType
ProductPricingInputDiscriminatorMappingRecurringPerUnitBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingRecurringPerUnitBillingFrequency
ProductPricingInputDiscriminatorMappingUsageCostPlusBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingUsageCostPlusBillingFrequency
ProductPricingInputDiscriminatorMappingUsagePerUnitBillingType:
type: string
enum:
- Advance
- Arrears
default: Arrears
title: ProductPricingInputDiscriminatorMappingUsagePerUnitBillingType
AgentAttribute:
type: object
properties:
name:
type: string
active:
type: boolean
pricing:
$ref: '#/components/schemas/Pricing'
required:
- name
- active
- pricing
title: AgentAttribute
ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInput:
type: object
properties:
kind:
$ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInputKind'
required:
- kind
title: ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInput
products_deleteByExternalId_Response_204:
type: object
properties: {}
description: Empty response body
title: products_deleteByExternalId_Response_204
ProductPricingInputDiscriminatorMappingUsageVolumeBillingType:
type: string
enum:
- Advance
- Arrears
default: Arrears
title: ProductPricingInputDiscriminatorMappingUsageVolumeBillingType
ProductPricingInputDiscriminatorMappingUsageGraduatedBillingType:
type: string
enum:
- Advance
- Arrears
default: Arrears
title: ProductPricingInputDiscriminatorMappingUsageGraduatedBillingType
ProductTieredPricePointTiersItems:
type: object
properties:
flatAmount:
type: number
format: double
index:
type: number
format: double
lowerBound:
type: number
format: double
number:
type: number
format: double
tierBillingType:
$ref: '#/components/schemas/ProductTieredPricePointTiersItemsTierBillingType'
unitAmount:
type: number
format: double
upperBound:
type: number
format: double
required:
- lowerBound
title: ProductTieredPricePointTiersItems
ProductPricePointOutput:
type: object
properties:
currency:
type: string
unitPrice:
type: number
format: double
tiers:
type: array
items:
$ref: '#/components/schemas/ProductPricePointOutputTiersItems'
minQuantity:
type: number
format: double
maxQuantity:
type: number
format: double
includedQuantity:
type: number
format: double
required:
- currency
- unitPrice
title: ProductPricePointOutput
UpdateProductRequest:
type: object
properties:
name:
type: string
description:
type:
- string
- 'null'
active:
type: boolean
productCode:
type:
- string
- 'null'
externalId:
type:
- string
- 'null'
metadata:
type:
- object
- 'null'
additionalProperties:
description: Any type
productAttributes:
type: array
items:
$ref: '#/components/schemas/ProductAttributeUpsert'
title: UpdateProductRequest
ProductPricePointOutputTiersItems:
type: object
properties:
flatAmount:
type: number
format: double
index:
type: number
format: double
lowerBound:
type: number
format: double
number:
type: number
format: double
tierBillingType:
$ref: '#/components/schemas/ProductPricePointOutputTiersItemsTierBillingType'
unitAmount:
type: number
format: double
upperBound:
type: number
format: double
required:
- lowerBound
title: ProductPricePointOutputTiersItems
ProductPricingInputDiscriminatorMappingRecurringPercentOfTotalBillingType:
type: string
enum:
- Advance
- Arrears
default: Advance
title: ProductPricingInputDiscriminatorMappingRecurringPercentOfTotalBillingType
AgentPricePointTiers:
type: object
properties:
minQuantity:
type: number
format: double
maxQuantity:
type: number
format: double
unitPrice:
type: number
format: double
required:
- unitPrice
title: AgentPricePointTiers
ProductListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Product_2'
pagination:
$ref: '#/components/schemas/Pagination'
required:
- data
- pagination
title: ProductListResponse
ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingType:
type: string
enum:
- Advance
- Arrears
default: Advance
title: ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingType
ProductPricingInputDiscriminatorMappingOneTimePerUnitFeeType:
type: string
enum:
- setup
- onboarding
- implementation
- migration
- custom
title: ProductPricingInputDiscriminatorMappingOneTimePerUnitFeeType
ProductUpdate:
type: object
properties:
name:
type: string
description:
type: string
externalId:
type: string
type:
$ref: '#/components/schemas/ProductUpdateType'
active:
type: boolean
productCode:
type: string
ProductAttribute:
type: array
items:
$ref: '#/components/schemas/AgentAttribute'
description: Pricing attributes for this product
metadata:
type: object
additionalProperties:
description: Any type
title: ProductUpdate
ProductPricingInputDiscriminatorMappingUsageCostPlusSignalType:
type: string
enum:
- activity
- outcome
title: ProductPricingInputDiscriminatorMappingUsageCostPlusSignalType
BillingFrequency:
type: string
enum:
- monthly
- quarterly
- annual
title: BillingFrequency
ProductPricingOutput:
type: object
properties:
pricingType:
$ref: '#/components/schemas/ProductPricingOutputPricingType'
chargeType:
type: string
pricingModel:
type: string
eventName:
type: string
signalType:
$ref: '#/components/schemas/ProductPricingOutputSignalType'
billingFrequency:
type: string
billingType:
type: string
creditsCurrencyId:
type: string
creditCost:
type: number
format: double
unitValue:
type: number
format: double
percentageValue:
type: number
format: double
costPlusMultiplier:
type: number
format: double
pricePoints:
type: array
items:
$ref: '#/components/schemas/ProductPricePointOutput'
required:
- pricingType
- chargeType
- pricePoints
title: ProductPricingOutput
ProductPricingInputDiscriminatorMappingRecurringVolumeBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingRecurringVolumeBillingFrequency
ProductPricingInputDiscriminatorMappingRecurringGraduatedBillingType:
type: string
enum:
- Advance
- Arrears
default: Advance
title: ProductPricingInputDiscriminatorMappingRecurringGraduatedBillingType
ErrorResponse:
type: object
properties:
error:
type: string
code:
type: string
details:
type: string
required:
- error
title: ErrorResponse
CreateProductRequest:
type: object
properties:
name:
type: string
description:
type:
- string
- 'null'
active:
type: boolean
default: false
productCode:
type:
- string
- 'null'
externalId:
type:
- string
- 'null'
metadata:
type:
- object
- 'null'
additionalProperties:
description: Any type
required:
- name
title: CreateProductRequest
ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
- Semi-Annually
- Annual
- Custom
title: ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsBillingFrequency
ProductPricingInputDiscriminatorMappingRecurringGraduatedBillingFrequency:
type: string
enum:
- Monthly
- Quarterly
-
# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/paid/refs/heads/main/openapi/paid-products-api-openapi.yml