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/punchh-rewards-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 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:
title: Online Ordering and SSO Rewards API
version: '1.0'
description: "The Punchh SSO API endpoints provide user-management functions such as login, registration, forgot password, and connect with Facebook for users on the Punchh loyalty platform. You can also fetch user-specific information such as rewards or point balances. \n\nThe Punchh Online Ordering API endpoints enable users to earn and redeem rewards for online orders."
contact:
name: Punchh Dev Support
url: https://developers.punchh.com
servers:
- url: https://SERVER_NAME_GOES_HERE.punchh.com
tags:
- name: Rewards
paths:
/api/auth/loyalty_points_estimator:
get:
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
estimated_points:
type: integer
description: 'System-estimated loyalty points of the user based on the `subtotal_amount` provided in the request. This value depends on the points conversion rate, which can be configured in the Punchh platform. Contact your Punchh representative to update this configuration. '
examples:
default:
value:
estimated_points: 46
summary: Estimate Loyalty Points Earning
description: 'Returns a prediction of how many points can be earned before submitting the transaction. The estimate is derived from the base earning rate of the business and does not account for special promotions or campaigns.
'
operationId: sso_estimate_loyalty_points_earning
parameters:
- $ref: '#/components/parameters/Signature'
- $ref: '#/components/parameters/Accept'
- $ref: '#/components/parameters/content_type'
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/User-Agent'
tags:
- Rewards
x-stoplight:
id: f588025c608a3
requestBody:
content:
application/json:
schema:
type: object
properties:
client:
type: string
description: Client key of the business
default: CLIENT_GOES_HERE
authentication_token:
type: string
default: AUTHENTICATION_TOKEN_GOES_HERE
description: The authentication token of the user. You can retrieve this from the response of a successful sign-in API call or through the [SSO process](/docs/dev-portal-online-ordering/9a41534336c87-sso-flow-for-web-and-mobile).
subtotal_amount:
type: number
format: float
description: Order amount before any taxes (sum of all amounts minus any discounts). This is the amount upon which loyalty points/visits are granted.
required:
- client
- subtotal_amount
examples:
default:
value:
client: CLIENT_GOES_HERE
authentication_token: AUTHENTICATION_TOKEN_GOES_HERE
subtotal_amount: 10
/api/auth/conversions:
post:
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
type: string
examples:
default:
value:
- 250 points converted into 2
summary: Convert Points
description: Converts points to cash, fuel discounts, and charities based on the configuration or conversion rules set in the Punchh platform
operationId: sso_points_conversion_api
parameters:
- $ref: '#/components/parameters/Signature'
- $ref: '#/components/parameters/Accept'
- $ref: '#/components/parameters/User-Agent'
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/content_type'
tags:
- Rewards
x-stoplight:
id: d23537781e07c
requestBody:
content:
application/json:
schema:
type: object
properties:
client:
type: string
description: Client key of the business
default: CLIENT_GOES_HERE
authentication_token:
type: string
default: AUTHENTICATION_TOKEN_GOES_HERE
conversion_rule_id:
type: integer
description: Conversion rule ID set for the Punchh platform configuration (returned for the converted_category_balances object as category_id)
format: int32
source_value:
type: integer
format: int32
description: Number of points the user wants to convert to cash, fuel discounts, or charities
converted_value:
type: integer
description: Values of the cash, fuel discounts, or charities converted from points
format: int32
social_cause_campaign_id:
type: string
description: Campaign ID in case of points converted to charity
required:
- client
- conversion_rule_id
- source_value
- converted_value
examples:
default:
value:
client: CLIENT_GOES_HERE
authentication_token: AUTHENTICATION_TOKEN_GOES_HERE
conversion_rule_id: 8
source_value: 100
converted_value: 10
social_cause_campaign_id: '12'
/api/auth/estimate_points:
get:
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
estimated_points:
type: integer
description: System-estimated loyalty points of the user based on the subtotal_amount provided in the request. This value depends on the points conversion rate, which can be configured in the Punchh platform. Contact your Punchh representative to update this configuration.
examples:
default:
value:
estimated_points: 200
summary: Estimate Points Earning
description: Returns a prediction of how many points can be earned before submitting the transaction. The estimate is derived from the base earning rate of the business and does not account for special promotions or campaigns.
operationId: sso_estimate_points_earning
parameters:
- $ref: '#/components/parameters/Signature'
- $ref: '#/components/parameters/Accept'
- $ref: '#/components/parameters/content_type'
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/User-Agent'
tags:
- Rewards
x-stoplight:
id: bce80fc26cf46
requestBody:
content:
application/json:
schema:
type: object
properties:
client:
type: string
description: Client key of the business
default: CLIENT_GOES_HERE
authentication_token:
type: string
default: AUTHENTICATION_TOKEN_GOES_HERE
menu_items:
$ref: '#/components/schemas/menu_items'
subtotal_amount:
type: number
format: float
description: Order amount before taxes (sum of all item amounts minus any discounts). Same as `receipt_amount`. For historical reasons, include this parameter along with `receipt_amount` in the API request.
receipt_amount:
type: number
description: Order amount before taxes, calculated as the sum of all item amounts minus any discounts. This is the amount used to calculate loyalty points/visits. The value of this parameter should match `subtotal_amount`. For example, if the order amount is $10, both `receipt_amount` and `subtotal_amount` will be 10. If a $2 discount is applied, both will be 8.
format: double
required:
- client
- subtotal_amount
- receipt_amount
examples:
default:
value:
client: CLIENT_GOES_HERE
authentication_token: AUTHENTICATION_TOKEN_GOES_HERE
menu_items:
- item_name: White rice
item_qty: 1
item_amount: 2
menu_item_type: M
menu_item_id: '3419'
menu_family: '800'
menu_major_group: '152'
serial_number: '1.0'
- item_name: Brown rice
item_qty: 1
item_amount: 8
menu_item_type: M
menu_item_id: '3418'
menu_family: '800'
menu_major_group: '152'
serial_number: '2.0'
subtotal_amount: 10
receipt_amount: 10
/api/auth/ordering_meta:
get:
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
base_redeemable_name:
type: string
description: Name of the base reedemable
base_redeemable_description:
type: string
description: Description of the base reedemable
base_redeemable_image:
type: string
description: Image of the base reedemable
base_redeemable_properties:
type:
- string
- 'null'
description: Properties of the base reedemable
examples:
default:
value:
base_redeemable_name: 'Punch Card = FREE Adult Buffet or Carryout 1-Topping Pizza '
base_redeemable_description: 'You just earned yourself an awesome reward! Now, you get to choose a FREE Adult Buffet or your favorite Carryout 1-Topping Pizza. Either way, you win.
*To redeem, use your Punch Card Reward when ordering online or through the MyAcme App.'
base_redeemable_image: IMAGE_URL_GOES_HERE
base_redeemable_properties: null
'400':
description: Sending invalid credentials
'412':
description: Sending invalid Signature
summary: Ordering Meta
description: Retrieves information about the base redeemable
operationId: sso_ordering_meta
parameters:
- $ref: '#/components/parameters/Signature'
- schema:
type: string
default: base_redeemable
in: query
name: filter
required: true
description: Send "base_redeemable" to get metadata about the redeemable
- $ref: '#/components/parameters/content_type'
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/User-Agent'
- $ref: '#/components/parameters/Accept'
tags:
- Rewards
x-stoplight:
id: 7108126712419
requestBody:
content:
application/json:
schema:
type: object
properties:
client:
type: string
description: Client key of the business
default: CLIENT_GOES_HERE
authentication_token:
type: string
x-stoplight:
id: h11lxep7b4xy6
description: The authentication token of the user. You can retrieve this from the response of a successful sign-in API call or through the [SSO process](https://developers.partech.com/docs/dev-portal-online-ordering/9a41534336c87-sso-flow-for-web-and-mobile).
required:
- client
examples:
default:
value:
client: CLIENT_GOES_HERE
/api/auth/offers:
get:
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
pinned_message:
type: string
description: Message attached with available offers
rewards:
$ref: '#/components/schemas/Rewards-Attribute'
notifications:
$ref: '#/components/schemas/Notifications'
redeemables:
$ref: '#/components/schemas/Redeemables-Attributes'
examples:
default:
value:
pinned_message: ''
rewards:
- code: '531611'
id: 1014491
business_id: 470
redeemable_id: 105
start_date: '2015-06-16'
end_date: '2015-07-15'
read_at: null
start_date_tz: '2015-06-15T18:30:00Z'
end_date_tz: '2015-07-15T18:29:59Z'
gaming_level_id: null
gifted_for_type: Admin
gift_reason: Admin Generosity
location_ids:
- 303133
- 303134
external_store_numbers:
- '3613'
- '3614'
notifications:
- id: 8415352
message: notification message
user_id: 111111111
token: null
sent_at: '2015-05-28T17:03:27Z'
kind: campaign
network: null
status: sent
deleted_at: null
created_at: '2015-05-28T17:03:26Z'
updated_at: '2015-05-28T17:03:27Z'
read_at: null
business_name: BUSINESS_NAME_GOES_HERE
sent_at_tz: '2015-05-28T11:03:27-06:00'
redeemables:
- description: Free Soft Drink (600 ml) when you purchase a Pizza!!
discount_amount: 700
id: 105
image: /images/punchh-icon-small.png
name: Free Soft Drink Offer!
points: 0
redeemable_id: 105
thumb_image: /images/punchh-icon-thumb.png
applicable_as_loyalty_redemption: null
'412':
description: Sending invalid Signature
'422':
description: Sending invalid Entity
summary: Fetch Available Offers
description: Fetches available offers or offer details of a user. This request returns how many offers are available to the user.
operationId: sso_auth_fetchavailableoffers
parameters:
- $ref: '#/components/parameters/Signature'
- $ref: '#/components/parameters/content_type'
- $ref: '#/components/parameters/Accept'
- $ref: '#/components/parameters/User-Agent'
- $ref: '#/components/parameters/Authorization'
tags:
- Rewards
x-stoplight:
id: ba92ee7891a30
requestBody:
content:
application/json:
schema:
type: object
properties:
authentication_token:
type: string
description: The authentication token of the user. You can retrieve this from the response of a successful sign-in API call or through the [SSO process](/docs/dev-portal-online-ordering/9a41534336c87-sso-flow-for-web-and-mobile).
client:
type: string
description: Client key of the business
required:
- client
examples:
default:
value:
authentication_token: AUTHENTICATION_TOKEN_GOES_HERE
client: CLIENT_GOES_HERE
components:
schemas:
Redeemables-Attributes:
type: array
items:
type: object
properties:
applicable_as_loyalty_redemption:
type: boolean
description: Applicable on loyalty
redeemable_properties:
type: string
description: Comma-separated values that provide additional details about a redeemable. For example, a redeemable could be "Food Item" or "Merchandise", etc. These can be configured for a business in the Punchh platform and attached to a redeemable. If no value is attached to a redeemable, a blank field will be returned.
discount_amount:
type: integer
description: Amount of discount on the reward
discount_channel:
type: string
description: 'Can accept any one of the following values:
- all - discountable everywhere
- online_only - online orders only
- offline_only - in store only'
expire_redemption_code_with_reward_end_date:
type:
- boolean
- 'null'
description: Whether the redemption code expires with the expiry of the reward
id:
type: integer
description: Identification of the reward
image:
type: string
description: Image of the redeemable item
points:
type: integer
description: Total number of points required for redemption
redeemable_id:
type: integer
description: Identification of the redeemable item
redemption_expiry:
type: integer
description: Expiry of the redemption, in minutes
thumb_image:
type: string
description: Thumbnail image of the redeemable item
name:
type: string
description: Name of the redeemable item
description:
type: string
description: Description of the redeemable item
title: Redeemables Attributes (Object)
x-stoplight:
id: 173597e963ebd
menu_items:
type: array
items:
type: object
properties:
item_name:
type: string
description: 'Name of the menu item
'
item_qty:
type: integer
description: Quantity ordered by the customer. If the item is a modifier (such as extra cheese on a pizza base item), make sure the quantity reflects the total number of base items included. For example, if you have a pizza base item with a certain item ID and a quantity of two, and the pizzas each have an extra cheese modifier added to them, then the modifier quantity should be two to account for the modifier across both pizzas. This applies only to base items of the same ID. If different base items include the same modifier, you do not need to sum the modifiers.
item_amount:
type: number
description: 'The total price of the line item or the amount of the discount that you applied to an item. In case of multiple quantities, this means the sum total of all item amounts. Always represent this value as a positive number, even when the item is a discount.
'
menu_item_type:
type: string
description: "The classification of the item. Choose from the following types based on the item:\n\nM - Menu item ( + or - ) \n\nD - Discount (negative). Either internal or Punchh will always evaluate lines as ( - ) regardless of the sign assigned in the API call\n\nS - Service item. Any item representing money received that is not a sale. For example, service charges, delivery fees, tips, purchase of gift cards/certificates, etc. \n\nT - Tax item. Taxes of all sorts \n\nP - Payment item. Visa, MasterCard, cash, gift card/certificate (when used to pay for the order)"
menu_item_id:
type: string
description: Unique identifier for the item
menu_family:
type: string
description: The family that the item belongs to. The family is the subcategory for the item. Even though the parameter is required, you can pass it in the request with a blank value. You can leave this blank if the item does not belong to a family.
menu_major_group:
type: string
description: 'The major group that the item belongs to. The major group is the parent category for the item. Even though the parameter is required, you can pass it in the request with a blank value. You can leave this blank if the item does not belong to a major group.
'
serial_number:
type: string
description: A serialized number that differentiates distinct menu items on a receipt. The purpose of this field is to identify which items on the receipt are base items and which items are modifiers to the base items. For example, a main menu item (such as pizza) may have serial number "1.0", and the associated modifiers (such as "extra cheese", "olives", and "jalapenos") may have serial numbers "1.1", "1.2", and "1.3" respectively. Serialization is limited to one decimal point, so you can only modify the base item. You cannot modify a modifier with 1.x.x, and so on.
required:
- item_name
- item_qty
- item_amount
- menu_item_type
- menu_item_id
- menu_family
- menu_major_group
- serial_number
title: Menu Items (Object)
x-stoplight:
id: e8647930d00a4
Notifications:
type: array
description: Returns the details of the notifications received by a user. A maximum of 10 notifications will be fetched.
items:
type: object
properties:
id:
type: integer
description: ID of the notification
kind:
type: string
description: 'Type of notification. There are three types of notifications that a user can receive: ''system'', ''campaign'', and ''news''.'
message:
type: string
description: Message sent to the user in the notification
read_at:
type: string
enum:
- YYYY-MM-DDThh:mm:ssZ
format: date-time
x-nullable: true
created_at:
type: string
enum:
- YYYY-MM-DDThh:mm:ssZ
format: date-time
title: Notifications (Object)
x-stoplight:
id: ba4734ac30a93
Rewards-Attribute:
type: array
items:
type: object
properties:
business_id:
type: integer
description: Identification of the business
end_date:
type: string
description: Date after which the reward will not be allowed on redemption, in YYYY-MM-DD format
enum:
- YYYY-MM-DD
format: date
end_date_tz:
type: string
enum:
- YYYY-MM-DDThh:mm:ssZ
format: date-time
description: Timestamp with time zone
gaming_level_id:
type: string
description: Gaming level that the user has reached
gifted_for_type:
type: string
description: 'The reward can be gifted for the following types:
- Admin reward - Offered by the administrator to a user
- Campaign - Offered to a user under a campaign triggered by a business
- Checkin - When a user makes a check-in
- FeedbackReply - Feedback provided by a user
- MassGifting - If a user is among the population of users that received rewards
- Referral - Referral of one user by another user
- ScratchPlay - Mobile game'
gift_reason:
type: string
description: Reward given for activity performed by a user
id:
type: integer
description: ID of reward
format: int64
location_ids:
type: array
description: Location IDs are interchangeable with external store numbers.
items:
type: integer
read_at:
type: string
enum:
- YYYY-MM-DDThh:mm:ssZ
format: date-time
description: Time when the user acknowledged the reward
redeemable_id:
type: integer
description: ID of the redeemable item
reward_properties:
description: Properties of the reward
x-nullable: true
start_date:
type: string
enum:
- YYYY-MM-DD
format: date
description: Date from which the reward is applicable, in YYYY-MM-DD format
start_date_tz:
type: string
enum:
- YYYY-MM-DDThh:mm:ssZ
format: date-time
description: Tmestamp with time zone
external_store_numbers:
type: array
description: External store numbers are interchangeable with location IDs.
items:
type: integer
type:
type: string
description: This will be either redeemable or reward. The Create Online Redemption API request depends on what is returned in this field.
title: Rewards Attributes (Object)
x-stoplight:
id: b56f79b98e3cd
parameters:
User-Agent:
schema:
type: string
default: Punchh/OnlineOrder/1.0/Web/BrowserVersion/OS_Type
name: User-Agent
in: header
required: true
description: For details, see [User Agent](/docs/dev-portal-online-ordering/additional-topics/user-agent).
content_type:
schema:
type: string
default: application/json
in: header
name: Content-Type
description: Set this header to **application/json**.
required: true
Signature:
schema:
type: string
default: SIGNATURE_GOES_HERE
in: header
name: x-pch-digest
description: The [signature](/docs/dev-portal-online-ordering/additional-topics/x-pch-digest-sha-1) for the API call
required: true
Accept:
schema:
type: string
default: application/json
in: header
name: Accept
description: Advertises which content types the client is able to understand
required: true
Authorization:
schema:
type: string
default: Bearer ACCESS_TOKEN_GOES_HERE
name: Authorization
in: header
required: true
description: You may pass the access_token instead of the authentication_token in Online Ordering endpoints to authorize the request. It must be supplied as `Bearer ACCESS_TOKEN_GOES_HERE`.
x-stoplight:
id: 73bbc35439926
x-ext-urls: {}