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-loyalty-cards-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 Loyalty cards API
version: ''
description: 'Operations tagged Loyalty cards 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: Loyalty cards
description: 'Represents loyalty cards.
[Loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview) allow your customers to collect and spend loyalty points within a card-based loyalty program.
'
paths:
/v2/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/link_profile:
post:
operationId: linkLoyaltyCardToProfile
summary: Link customer profile to card
description: '[Loyalty cards](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview)
allow customers to collect and spend loyalty points within a [card-based loyalty
program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types).
They are useful to gamify loyalty programs and can be used with or without
customer profiles linked to them.
Link a customer profile to a given loyalty card for the card to be set as
**Registered**.
This affects how it can be used. See the
[docs](https://docs.talon.one/docs/product/loyalty-programs/card-based/managing-loyalty-cards#linking-customer-profiles-to-a-loyalty-card).
> [!note] You can link as many customer profiles to a given loyalty card as the
> [**card user limit**](https://docs.talon.one/docs/product/loyalty-programs/card-based/creating-cb-programs)
> allows.
'
tags:
- Loyalty cards
security:
- api_key_v1: []
parameters:
- name: loyaltyProgramId
in: path
description: 'Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with
the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
'
example: 33
required: true
schema:
type: integer
- name: loyaltyCardId
in: path
description: 'Identifier of the loyalty card. You can get the identifier with
the [List loyalty
cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards)
endpoint.
**Important**: The loyalty card ID requires [URL
encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it
contains special characters. For example, you must encode `NewCard2026%`
as `NewCard2026%25`.
'
example: summer-loyalty-card-0543
required: true
schema:
type: string
minLength: 4
maxLength: 108
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LoyaltyCardRegistration'
description: body
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LoyaltyCard'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'401':
description: Unauthorized
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
/v2/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/unlink_profile:
post:
operationId: unlinkLoyaltyCardFromProfile
summary: Unlink customer profile from a loyalty card
description: 'Unlink a customer profile from a [registered](https://docs.talon.one/docs/product/loyalty-programs/card-based/managing-loyalty-cards#linking-customer-profiles-to-a-loyalty-card) loyalty card.
To get the `integrationId` of a customer profile, you can use the
[Update customer session](https://docs.talon.one/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2)
endpoint.
'
tags:
- Loyalty cards
security:
- api_key_v1: []
parameters:
- name: loyaltyProgramId
in: path
description: 'The identifier of the card-based loyalty program containing the loyalty card. You can get this ID using the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
'
example: 33
required: true
schema:
type: integer
- name: loyaltyCardId
in: path
description: 'The identifier of the loyalty card. You can get this ID using the [List loyalty
cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards)
endpoint.
**Important**: The loyalty card ID requires [URL
encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it
contains special characters. For example, you must encode `NewCard2026%`
as `NewCard2026%25`.
'
example: summer-loyalty-card-0543
required: true
schema:
type: string
minLength: 4
maxLength: 108
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LoyaltyCardRegistration'
description: body
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LoyaltyCard'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'401':
description: Unauthorized
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/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/balances:
get:
operationId: getLoyaltyCardBalances
summary: Get card's point balances
description: 'Retrieve loyalty balances for the given loyalty card in the specified loyalty program with filtering options applied.
If no filtering options are applied, all loyalty balances for the given loyalty card are returned.
'
security:
- api_key_v1: []
tags:
- Loyalty cards
parameters:
- name: loyaltyProgramId
in: path
description: 'Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with
the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
'
example: 33
required: true
schema:
type: integer
- name: loyaltyCardId
in: path
description: 'Identifier of the loyalty card. You can get the identifier with
the [List loyalty
cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards)
endpoint.
**Important**: The loyalty card ID requires [URL
encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it
contains special characters. For example, you must encode `NewCard2026%`
as `NewCard2026%25`.
'
example: summer-loyalty-card-0543
required: true
schema:
type: string
minLength: 4
maxLength: 108
- name: endDate
in: query
required: false
description: 'Used to return expired, active, and pending loyalty balances before this
timestamp. You can enter any past, present, or future timestamp value.
> [!note] **Note**
> - This must be an RFC3339 timestamp string.
> - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting
> considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered.
'
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: subledgerId
in: query
required: false
description: Filter results by one or more subledger IDs. Must be exact match.
example:
- subledger1
- subledger2
style: form
explode: true
schema:
type: array
items:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LoyaltyCardBalances'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'401':
description: Unauthorized
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/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/transactions:
get:
operationId: getLoyaltyCardTransactions
summary: List card's transactions
description: 'Retrieve loyalty transaction logs for the given loyalty card in the specified loyalty program with filtering options applied.
If no filtering options are applied, the last 50 loyalty transactions for the given loyalty card are returned.
'
security:
- api_key_v1: []
tags:
- Loyalty cards
parameters:
- name: loyaltyProgramId
in: path
description: 'Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with
the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
'
example: 33
required: true
schema:
type: integer
- name: loyaltyCardId
in: path
description: 'Identifier of the loyalty card. You can get the identifier with
the [List loyalty
cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards)
endpoint.
**Important**: The loyalty card ID requires [URL
encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it
contains special characters. For example, you must encode `NewCard2026%`
as `NewCard2026%25`.
'
example: summer-loyalty-card-0543
required: true
schema:
type: string
minLength: 4
maxLength: 108
- name: subledgerId
in: query
required: false
description: Filter results by one or more subledger IDs. Must be exact match.
example:
- subledger1
- subledger2
style: form
explode: true
schema:
type: array
items:
type: string
- name: loyaltyTransactionType
in: query
required: false
description: 'Filter results by loyalty transaction type:
- `manual`: Loyalty transaction that was done manually.
- `session`: Loyalty transaction that resulted from a customer session.
- `import`: Loyalty transaction that was imported from a CSV file.
'
example: manual
schema:
type: string
enum:
- manual
- session
- import
- name: startDate
in: query
required: false
description: 'Date and time from which results are returned. Results are filtered by
transaction creation date.
> [!note] **Note**
> - This must be an RFC3339 timestamp string.
> - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting
> considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered.
'
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: endDate
in: query
required: false
description: 'Date and time by which results are returned. Results are filtered by
transaction creation date.
> [!note] **Note**
> - This must be an RFC3339 timestamp string.
> - You can include a time component in your string, for example, `T23:59:59` to specify the end of the day. The time zone setting
> considered is `UTC`. If you do not include a time component, a default time value of `T00:00:00` (midnight) in `UTC` is considered.
'
example: '2024-05-29T15:04:05+07:00'
schema:
type: string
format: date-time
- name: customerSessionIDs
in: query
required: false
description: 'Filter the results by a list of customer session IDs.
To include multiple IDs, repeat the parameter for each one, for example,
`?customerSessionIDs=id1&customerSessionIDs=id2`.
The response contains only data associated with the specified sessions.
'
example:
- session_integration_id_1
- session_integration_id_1
schema:
type: array
items:
type: string
- name: transactionUUIDs
in: query
required: false
description: 'Filter the results by a list of transaction UUIDs.
To include multiple IDs, repeat the parameter for each one, for example,
`?transactionUUIDs=uuid1&transactionUUIDs=uuid2`.
The response contains only data associated with the specified transactions.
'
example:
- dc608634-0100-40d9-b371-e964476bbe0f
- 9e829590-05cf-407b-b4c0-5f28468a81e1
schema:
type: array
items:
type: string
- name: pageSize
in: query
required: false
description: The number of items in the response.
example: 50
schema:
type: integer
minimum: 1
maximum: 1000
default: 50
- $ref: '#/components/parameters/skip'
- name: awaitsActivation
in: query
required: false
description: 'If `true`: Filters results to include only point transactions that have action-based activation and have not expired.
If `false`: Returns a `400` response.
'
example: true
schema:
type: boolean
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/CardLedgerTransactionLogEntryIntegrationAPI'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'401':
description: Unauthorized
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/loyalty_programs/{loyaltyProgramId}/cards/{loyaltyCardId}/points:
get:
operationId: getLoyaltyCardPoints
summary: List card's unused loyalty points
description: 'Get paginated results of loyalty points for a given loyalty card identifier in a card-based loyalty program. This endpoint returns only the balances of unused points on a loyalty card.
You can filter points by status:
- `active`: Points ready to be redeemed.
- `pending`: Points with a start date in the future.
- `expired`: Points with an expiration date in the past.
'
security:
- api_key_v1: []
tags:
- Loyalty cards
parameters:
- name: loyaltyProgramId
in: path
description: 'Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with
the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
'
example: 33
required: true
schema:
type: integer
- name: loyaltyCardId
in: path
description: 'Identifier of the loyalty card. You can get the identifier with
the [List loyalty
cards](https://docs.talon.one/management-api#tag/Loyalty-cards/operation/getLoyaltyCards)
endpoint.
**Important**: The loyalty card ID requires [URL
encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it
contains special characters. For example, you must encode `NewCard2026%`
as `NewCard2026%25`.
'
example: summer-loyalty-card-0543
required: true
schema:
type: string
minLength: 4
maxLength: 108
- name: status
in: query
required: false
description: Filter points based on their status.
example: active
schema:
type: string
enum:
- active
- pending
- expired
default: active
- name: subledgerId
in: query
required: false
description: Filter results by one or more subledger IDs. Must be exact match.
example:
- subledger1
- subledger2
style: form
explode: true
schema:
type: array
items:
type: string
- name: customerSessionIDs
in: query
required: false
description: 'Filter the results by a list of customer session IDs.
To include multiple IDs, repeat the parameter for each one, for example,
`?customerSessionIDs=id1&customerSessionIDs=id2`.
The response contains only data associated with the specified sessions.
'
example:
- session_integration_id_1
- session_integration_id_1
schema:
type: array
items:
type: string
- name: transactionUUIDs
in: query
required: false
description: 'Filter the results by a list of transaction UUIDs.
To include multiple IDs, repeat the parameter for each one, for example,
`?transactionUUIDs=uuid1&transactionUUIDs=uuid2`.
The response contains only data associated with the specified transactions.
'
example:
- dc608634-0100-40d9-b371-e964476bbe0f
- 9e829590-05cf-407b-b4c0-5f28468a81e1
schema:
type: array
items:
type: string
- name: pageSize
in: query
required: false
description: The number of items in the response.
example: 50
schema:
type: integer
minimum: 1
maximum: 1000
default: 50
- $ref: '#/components/parameters/skip'
- name: sort
in: query
required: false
description: 'The field by which results should be sorted. You can enter one of the following values:
- `startDate`: Sorts the results by the start date of the points.
- `expiryDate`: Sorts the results by the expiry date of the points.
By default, results are sorted in ascending order.
To sort them in descending order, prefix the field name with `-`.
**Note:** You can only sort by one field at a time.
'
example: startDate
schema:
type: string
enum:
- startDate
- expiryDate
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/CardLedgerPointsEntryIntegrationAPI'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'401':
description: Unauthorized
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/loyalty_programs/{loyaltyProgramId}/cards:
post:
operationId: generateLoyaltyCard
summary: Generate loyalty card
description: 'Generate a loyalty card in a specified [card-based loyalty
program](https://docs.talon.one/docs/product/loyalty-programs/card-based/card-based-overview).
To link the card to one or more customer profiles, use the
`customerProfileIds` parameter in the request body.
> [!note] **Note**
> - The number of customer profiles linked to the loyalty card cannot exceed
> the loyalty program''s `usersPerCardLimit`. To find the program''s limit, use
> the [Get loyalty program](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyProgram)
> endpoint.
> - If the loyalty program has a defined code format, it will be used for the
> loyalty card identifier.
'
security:
- api_key_v1: []
tags:
- Loyalty cards
parameters:
- name: loyaltyProgramId
in: path
description: 'Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with
the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
'
example: 33
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateLoyaltyCard'
description: body
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LoyaltyCard'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
get:
operationId: getLoyaltyCards
summary: List loyalty cards
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.
For the given card-based loyalty program, list the loyalty cards that match your filter criteria.
'
tags:
- Loyalty cards
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/skip'
- $ref: '#/components/parameters/sort'
- name: loyaltyProgramId
in: path
description: 'Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with
the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
'
example: 33
required: true
schema:
type: integer
- name: identifier
description: 'The card code by which to filter loyalty cards in the response.
**Important**: The loyalty card ID requires [URL
encoding](https://www.w3schools.com/tags//ref_urlencode.asp) if it
contains special characters. For example, you must encode `NewCard2026%`
as `NewCard2026%25`.
'
example: summer-loyalty-card-054
in: query
required: false
schema:
type: string
minLength: 4
- name: profileId
in: query
description: Filter results by customer profile ID.
example: 44
required: false
schema:
type: integer
minimum: 1
- name: batchId
in: query
description: Filter results by loyalty card batch ID.
example: UY83CTT4
required: false
schema:
type: string
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/LoyaltyCard'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
security:
- api_key_v1: []
servers:
- url: https://yourbaseurl.talon.one
/v1/loyalty_programs/{loyaltyProgramId}/import_cards:
post:
operationId: importLoyaltyCards
summary: Import loyalty cards
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.
Upload a CSV file containing the loyalty cards that you want to use in your
card-based loyalty program.
Send the file as multipart data.
It contains the following columns for each card:
- `identifier` (required): The identifier of the loyalty card,
which must match the regular expression `^[A-Za-z0-9._%+@-]+$`.
- `state` (required): The state of the loyalty card. It can be `active` or
`inactive`.
- `customerprofileids` (optional): An array of strings representing the
identifiers of the customer profiles linked to the loyalty card. The
identifiers should be separated with a semicolon (;).
- `attributes` (optional): A JSON object that contains the loyalty card''s custom
attributes and their values. These attributes must be created and connected to this
loyalty program before they can be assigned to the cards through this endpoint.
> [!note] Your CSV file must contain less than 500,000 rows. Requests time out after 30 seconds.
## Example
```csv
identifier,state,customerprofileids,attributes
123-456-789AT,active,Alexa001;UserA,''{""my_attributes"": ""10_off""}"
```
'
tags:
- Loyalty cards
parameters:
- name: loyaltyProgramId
in: path
description: 'Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with
the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
'
example: 33
required: true
schema:
type: integer
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
upFile:
description: The CSV file containing the data that is being imported.
type: string
format: binary
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Import'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
security:
- manager_auth: []
- management_key: []
servers:
- url: https://yourbaseurl.talon.one
/v1/loyalty_programs/{loyaltyProgramId}/cards/batch:
post:
operationId: createBatchLoyaltyCards
summary: Create loyalty cards
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 a batch of loyalty cards in a specified [card-based loyalty
program](https://docs.talon.one/docs/product/loyalty-programs/overview#loyalty-program-types).
Customers can use loyalty cards to collect and spend loyalty points.
> [!important] **Note**
> - The specified card-based loyalty program must have a defined card code
> format that is used to generate the loyalty card codes.
> - Trying to create more than 20,000 loyalty cards in a single request
> returns an error message with a `400` status code.
'
tags:
- Loyalty cards
parameters:
- name: loyaltyProgramId
in: path
description: 'Identifier of the card-based loyalty program containing the loyalty card. You can get the ID with
the [List loyalty programs](https://docs.talon.one/management-api#tag/Loyalty/operation/getLoyaltyPrograms) endpoint.
'
example: 33
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LoyaltyCardBatch'
description: body
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LoyaltyCardBatchResponse'
'400':
description: Bad request
# --- truncated at 32 KB (99 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/talon-one/refs/heads/main/openapi/talon-one-loyalty-cards-api-openapi.yml