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/talon-one-coupons-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: 3.2.0
info:
title: Talon One Coupons API
version: ''
description: 'Operations tagged Coupons across 2 of this provider''s published API definitions: talon-one-integration-api-openapi.yml, talon-one-management-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://yourbaseurl.talon.one
tags:
- name: Coupons
description: 'Represents unique codes belonging to a particular campaign. Coupons don''t define any behavior on their own.
Instead the campaign ruleset can include rules that validate coupons and carry out particular effects.
See the [docs](https://docs.talon.one/docs/product/campaigns/coupons/coupon-page-overview).
'
paths:
/v1/coupon_reservations/{couponValue}:
post:
operationId: createCouponReservation
summary: Create coupon reservation
description: 'Create a coupon reservation for the specified customer profiles on the
specified coupon.
You can also create a reservation via the Campaign Manager using the
[Create coupon code
reservation](https://docs.talon.one/docs/product/rules/effects/using-effects#reserving-a-coupon-code)
effect.
> [!note] **Note**
> - If the **Reservation mandatory** option was selected when creating the
> specified coupon, the endpoint creates a **hard** reservation, meaning only users who have
> this coupon code reserved can redeem it.
>
> Otherwise, the endpoint creates a **soft** reservation, meaning the coupon
> is associated with the specified customer profiles (they show up when using
> the [List customer data](https://docs.talon.one/integration-api#tag/Customer-profiles/operation/getCustomerInventory)
> endpoint), but any user can redeem it.
>
> This can be useful, for example, to display a _coupon wallet_ for customers
> when they visit your store.
> - If the **Coupon visibility** option was selected when creating the
> specified coupon, the coupon code is implicitly soft-reserved for all customers, and the code
> will be returned for all customer profiles in the [List customer
> data](https://docs.talon.one/integration-api#tag/Customer-profiles/operation/getCustomerInventory) endpoint.
> - This endpoint overrides the coupon reservation limit set when
> [the coupon is created](https://docs.talon.one/docs/product/campaigns/coupons/creating-coupons).
To ensure that coupons cannot be reserved after the reservation limit is
reached, use the [Create coupon code
reservation](https://docs.talon.one/docs/product/rules/effects/using-effects#reserving-a-coupon-code)
effect in the Rule Builder and the [Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)
endpoint.
To delete a reservation, use the
[Delete reservation](https://docs.talon.one/integration-api#tag/Coupons/operation/deleteCouponReservation) endpoint.
'
security:
- api_key_v1: []
tags:
- Coupons
parameters:
- name: couponValue
in: path
description: 'The code of the coupon.
**Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp)
if it contains special characters.
For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`.
'
example: SUMMER10
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/CouponReservations'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Coupon'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'401':
description: Unauthorized - Invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
delete:
operationId: deleteCouponReservation
summary: Delete coupon reservations
description: 'Remove all the coupon reservations from the provided customer profile integration IDs and the provided
coupon code.
'
security:
- api_key_v1: []
tags:
- Coupons
parameters:
- name: couponValue
in: path
description: 'The code of the coupon.
**Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp)
if it contains special characters.
For example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`.
'
example: SUMMER10
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/CouponReservations'
responses:
'204':
description: No Content
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'401':
description: Unauthorized - Invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
servers:
- url: https://yourbaseurl.talon.one
/v1/coupon_reservations/customerprofiles/{couponValue}:
get:
operationId: getReservedCustomers
summary: List customers that have this coupon reserved
description: 'Return all customers that have this coupon marked as reserved. This includes hard and soft reservations.
'
security:
- api_key_v1: []
tags:
- Coupons
parameters:
- name: couponValue
in: path
description: "The code of the coupon.\n\n**Important:** The coupon code requires [URL encoding](https://www.w3schools.com/tags//ref_urlencode.asp) \nif it contains special characters.\nFor example, you must encode `SUMMER25%OFF` as `SUMMER25%25OFF`.\n"
example: SUMMER10
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- totalResultSize
- data
properties:
totalResultSize:
type: integer
example: 1
data:
type: array
items:
$ref: '#/components/schemas/CustomerProfile'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'401':
description: Unauthorized - Invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
servers:
- url: https://yourbaseurl.talon.one
/v1/applications/{applicationId}/campaigns/{campaignId}/coupons:
post:
operationId: createCoupons
summary: Create coupons
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
Create coupons according to some pattern. Up to 20.000 coupons can be created without a unique prefix. When a unique prefix is provided, up to 200.000 coupons can be created.'
tags:
- Coupons
parameters:
- name: silent
in: query
description: 'Possible values: `yes` or `no`.
- `yes`: Increases the performance of the API call by returning a 204 response.
- `no`: Returns a 200 response that contains the updated customer profiles.
'
example: 'yes'
required: false
schema:
type: string
default: 'yes'
- $ref: '#/components/parameters/applicationId'
- $ref: '#/components/parameters/campaignId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewCoupons'
description: body
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- totalResultSize
- data
properties:
totalResultSize:
type: integer
example: 1
data:
type: array
items:
$ref: '#/components/schemas/Coupon'
'204':
description: No Content
security:
- manager_auth: []
- management_key: []
put:
operationId: updateCouponBatch
summary: Update coupons
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
Update all coupons or a specific batch of coupons in the given campaign.
You can find the `batchId` on the **Coupons** page of your campaign in the
Campaign Manager, or you can use [List coupons](#tag/Coupons/operation/getCouponsWithoutTotalCount).
> [!note] **Note**
> - Only send sequential requests to this endpoint.
> - Requests to this endpoint time out after 30 minutes. If you hit a timeout, contact our support team.
> - With this `PUT` endpoint, if you do not explicitly set a value for the `startDate` and `expiryDate` properties in your request, it is automatically set to `null`.
To update a specific coupon, use [Update coupon](#tag/Coupons/operation/updateCoupon).
'
tags:
- Coupons
parameters:
- $ref: '#/components/parameters/applicationId'
- $ref: '#/components/parameters/campaignId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCouponBatch'
description: body
required: true
responses:
'204':
description: No Content
security:
- manager_auth: []
- management_key: []
delete:
operationId: deleteCoupons
summary: Delete coupons
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
Deletes all the coupons matching the specified criteria.'
tags:
- Coupons
parameters:
- $ref: '#/components/parameters/applicationId'
- $ref: '#/components/parameters/campaignId'
- name: value
in: query
description: Filter results performing case-insensitive matching against the coupon code. Both the code and the query are folded to remove all non-alpha-numeric characters.
example: SUMMER10
required: false
schema:
type: string
- name: createdBefore
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon creation timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: createdAfter
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon creation timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: startsAfter
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon start date timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: startsBefore
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon start date timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: expiresAfter
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon expiration date timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: expiresBefore
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon expiration date timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: valid
in: query
description: '- `expired`: Matches coupons in which the expiration date is set and in the past.
- `validNow`: Matches coupons in which start date is null or in the past and expiration date is null or in the future.
- `validFuture`: Matches coupons in which start date is set and in the future.
'
example: validNow
required: false
schema:
type: string
enum:
- expired
- validNow
- validFuture
- name: batchId
in: query
description: Filter results by batches of coupons
example: nfinccze
required: false
schema:
type: string
- name: usable
in: query
description: '- `true`: only coupons where `usageCounter < usageLimit` will be returned.
- `false`: only coupons where `usageCounter >= usageLimit` will be returned.
'
example: 'false'
schema:
type: string
enum:
- 'true'
- 'false'
- name: referralId
in: query
description: Filter the results by matching them with the ID of a referral. This filter shows the coupons created by redeeming a referral code.
example: 47
required: false
schema:
type: integer
- name: recipientIntegrationId
in: query
description: 'Filter results by match with a profile ID specified in the coupon''s `RecipientIntegrationId` field.
'
example: customer1
required: false
schema:
type: string
- name: exactMatch
in: query
description: Filter results to an exact case-insensitive matching against the coupon code
example: false
required: false
schema:
type: boolean
default: false
responses:
'204':
description: No Content
security:
- manager_auth: []
- management_key: []
servers:
- url: https://yourbaseurl.talon.one
/v1/applications/{applicationId}/campaigns/{campaignId}/coupons_with_recipients:
post:
operationId: createCouponsForMultipleRecipients
summary: Create coupons for multiple recipients
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
Create coupons according to some pattern for up to 1000 recipients.'
tags:
- Coupons
parameters:
- name: silent
in: query
description: 'Possible values: `yes` or `no`.
- `yes`: Increases the performance of the API call by returning a 204 response.
- `no`: Returns a 200 response that contains the updated customer profiles.
'
example: 'yes'
required: false
schema:
type: string
default: 'yes'
- $ref: '#/components/parameters/applicationId'
- $ref: '#/components/parameters/campaignId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewCouponsForMultipleRecipients'
description: body
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- totalResultSize
- data
properties:
totalResultSize:
type: integer
example: 1
data:
type: array
items:
$ref: '#/components/schemas/Coupon'
'204':
description: No Content
security:
- manager_auth: []
- management_key: []
servers:
- url: https://yourbaseurl.talon.one
/v1/applications/{applicationId}/campaigns/{campaignId}/coupons_async:
post:
operationId: createCouponsAsync
summary: Create coupons asynchronously
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
Create up to 5,000,000 coupons asynchronously. You should typically use this enpdoint when you create at least 20,001 coupons. You receive an email when the creation is complete.
If you want to create less than 20,001 coupons, you can use the [Create coupons](https://docs.talon.one/management-api#tag/Coupons/operation/createCoupons) endpoint.
'
tags:
- Coupons
parameters:
- $ref: '#/components/parameters/applicationId'
- $ref: '#/components/parameters/campaignId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewCouponCreationJob'
description: body
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncCouponCreationResponse'
security:
- manager_auth: []
- management_key: []
servers:
- url: https://yourbaseurl.talon.one
/v1/applications/{applicationId}/campaigns/{campaignId}/coupons_deletion_jobs:
post:
operationId: createCouponsDeletionJob
summary: Creates a coupon deletion job
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
This endpoint handles creating a job to delete coupons asynchronously.
'
tags:
- Coupons
parameters:
- $ref: '#/components/parameters/applicationId'
- $ref: '#/components/parameters/campaignId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewCouponDeletionJob'
description: body
required: true
responses:
'202':
description: The deletion request has been accepted and will be processed asynchronously
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncCouponDeletionJobResponse'
security:
- manager_auth: []
- management_key: []
servers:
- url: https://yourbaseurl.talon.one
/v1/applications/{applicationId}/campaigns/{campaignId}/coupons/no_total:
get:
operationId: getCouponsWithoutTotalCount
summary: List coupons
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
List all the coupons matching the specified criteria.
'
tags:
- Coupons
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/skip'
- $ref: '#/components/parameters/sort'
- $ref: '#/components/parameters/applicationId'
- $ref: '#/components/parameters/campaignId'
- name: value
in: query
description: Filter results performing case-insensitive matching against the coupon code. Both the code and the query are folded to remove all non-alpha-numeric characters.
example: SUMMER10
required: false
schema:
type: string
- name: createdBefore
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon creation timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: createdAfter
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon creation timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: valid
in: query
description: 'Either "expired", "validNow", or "validFuture". The first option matches coupons in which the expiration date is set and in the past. The second matches coupons in which start date is null or in the past and expiration date is null or in the future, the third matches coupons in which start date is set and in the future.
'
example: validNow
required: false
schema:
type: string
enum:
- expired
- validNow
- validFuture
- name: usable
in: query
description: 'Either "true" or "false". If "true", only coupons where `usageCounter < usageLimit` will be returned, "false" will return only coupons where `usageCounter >= usageLimit`.
'
example: 'false'
schema:
type: string
enum:
- 'true'
- 'false'
- name: redeemed
in: query
description: '- `true`: only coupons where `usageCounter > 0` will be returned.
- `false`: only coupons where `usageCounter = 0` will be returned.
- This field cannot be used in conjunction with the `usable` query parameter.
'
example: 'false'
schema:
type: string
enum:
- 'true'
- 'false'
- name: referralId
in: query
description: Filter the results by matching them with the ID of a referral. This filter shows the coupons created by redeeming a referral code.
example: 47
required: false
schema:
type: integer
- name: recipientIntegrationId
in: query
description: Filter results by match with a profile ID specified in the coupon's RecipientIntegrationId field.
example: customer1
required: false
schema:
type: string
- name: batchId
in: query
description: Filter results by batches of coupons
example: nfinccze
required: false
schema:
type: string
- name: exactMatch
in: query
description: Filter results to an exact case-insensitive matching against the coupon code.
example: false
required: false
schema:
type: boolean
default: false
- name: expiresBefore
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon expiration date timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: expiresAfter
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon expiration date timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: startsBefore
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon start date timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: startsAfter
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon start date timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: valuesOnly
in: query
description: Filter results to only return the coupon codes (`value` column) without the associated coupon data.
example: false
required: false
schema:
type: boolean
default: false
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- hasMore
- data
properties:
hasMore:
type: boolean
example: true
data:
type: array
items:
$ref: '#/components/schemas/Coupon'
security:
- manager_auth: []
- management_key: []
servers:
- url: https://yourbaseurl.talon.one
/v1/applications/{applicationId}/campaigns/{campaignId}/coupons/{couponId}:
put:
operationId: updateCoupon
summary: Update coupon
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
Update the specified coupon.
> [!note]
> With this `PUT` endpoint, if you do not explicitly set a value for the `startDate`, `expiryDate`,
> and `recipientIntegrationId` properties in your request, it is automatically set to `null`.
'
tags:
- Coupons
parameters:
- $ref: '#/components/parameters/applicationId'
- $ref: '#/components/parameters/campaignId'
- name: couponId
in: path
description: 'The internal ID of the coupon code. You can find this value in the `id` property from the
[List coupons](https://docs.talon.one/management-api#tag/Coupons/operation/getCouponsWithoutTotalCount) endpoint response.
'
example: '1194'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCoupon'
description: body
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Coupon'
security:
- manager_auth: []
- management_key: []
delete:
operationId: deleteCoupon
summary: Delete coupon
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
Delete the specified coupon.'
tags:
- Coupons
parameters:
- $ref: '#/components/parameters/applicationId'
- $ref: '#/components/parameters/campaignId'
- name: couponId
in: path
description: 'The internal ID of the coupon code. You can find this value in the `id` property from the
[List coupons](https://docs.talon.one/management-api#tag/Coupons/operation/getCouponsWithoutTotalCount) endpoint response.
'
example: '1194'
required: true
schema:
type: string
responses:
'204':
description: No Content
security:
- manager_auth: []
- management_key: []
servers:
- url: https://yourbaseurl.talon.one
/v1/applications/{applicationId}/campaigns/{campaignId}/coupons_search_advanced/no_total:
post:
operationId: searchCouponsAdvancedWithoutTotalCount
summary: List coupons that match the given attributes in campaign (without total count)
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
List the coupons whose attributes match the query criteria in the given campaign.
The match is successful if all the attributes of the request are found in a
coupon, even if the coupon has more attributes that are not present on the request.
> [!note] The total count is not included in the response.
'
tags:
- Coupons
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/skip'
- $ref: '#/components/parameters/sort'
- $ref: '#/components/parameters/applicationId'
- $ref: '#/components/parameters/campaignId'
- name: value
in: query
description: Filter results performing case-insensitive matching against the coupon code. Both the code and the query are folded to remove all non-alpha-numeric characters.
example: SUMMER10
required: false
schema:
type: string
- name: createdBefore
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon creation timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: createdAfter
in: query
description: Filter results comparing the parameter value, expected to be an RFC3339 timestamp string, to the coupon creation timestamp. You can use any time zone setting. Talon.One will convert to UTC internally.
required: false
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: valid
in: query
description: 'Either "expired",
# --- truncated at 32 KB (88 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/talon-one/refs/heads/main/openapi/talon-one-coupons-api-openapi.yml