Button Offers API

The Offers API from Button — 1 operation(s) for offers.

Operations 1

POST /v1/offers Offers #

Work with this as data

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/button-offers-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 Specification

button-offers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: billing-api Accounts Offers API
  version: '4'
  description: Retrieve billing accounts and affiliate commission transactions across currencies.
servers:
- url: https://api.usebutton.com/v1/affiliation
security:
- sec0: []
tags:
- name: Offers
paths:
  /v1/offers:
    post:
      summary: Offers
      description: Obtain real-time rates/offers available to a Publisher user.
      operationId: offers
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - user_id
              properties:
                user_id:
                  type: string
                  description: Publisher’s ID for the user, a string between 1 and 255 characters long in the ASCII range [0x21-0x7E]. This should be the same ID that is passed into the Button SDK when configuring user attribution.
                device_ids:
                  type: array
                  description: 'List of device advertising IDs associated with the user. These must be either IDFAs for iOS or GAIDs for Android. Trim any whitespace in device advertising ID prior to passing it to the API. Note: The API accepts at most 10 combined identifiers (email hashes + device IDs).'
                  items:
                    type: string
                email_sha256s:
                  type: array
                  description: 'List of SHA256 email hashes (as a 64-character hex string) associated with the user. Downcase and trim any whitespace of the email address prior to hashing. Note: The API accepts at most 10 combined identifiers (email hashes + device IDs).'
                  items:
                    type: string
                merchant_id:
                  type: string
                  description: Brand organization ID with which to restrict user offers.
                  default: optional
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"meta\": {\n    \"status\": \"ok\"\n  },\n  \"object\": {\n    \"merchant_offers\": [\n      {\n        \"merchant_id\": \"org-123\",\n        \"offers\": [\n          {\n            \"id\": \"offer-XXX\",\n            \"rate_percent\": \"4.5\",\n            \"display_params\": {\n              \"category\": \"Video Games\",\n              \"offer_type\": \"category\",\n            },\n            \"rank\": 1\n          },\n          {\n            \"id\": \"offer-YYY\",\n            \"rate_percent\": \"2\",\n            \"display_params\": {\n              \"offer_tag\": \"promotional\"\n            },\n            \"rank\": 2\n          },\n          {\n            \"id\": \"offer-ZZZ\",\n            \"rate_fixed\": \"1.00\",\n            \"currency\": \"USD\",\n            \"display_params\": {},\n            \"rank\": 3\n          }\n        ]\n      }\n    ]\n  }\n}"
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: "curl https://pubapi.usebutton.com/v1/offers \\\n  -X POST \\\n  -u YOUR_API_KEY: \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"user_id\": \"some-user-id\",\n    \"device_ids\": [\"123\"],\n    \"email_sha256s\": [\"1234567a1234567a1234567a1234567a1234567a1234567a1234567a1234567a\"]\n  }'"
        samples-languages:
        - curl
      tags:
      - Offers
components:
  securitySchemes:
    sec0:
      type: http
      scheme: basic