Overview
Extole exposes three public REST APIs, grouped by where the calling code runs and what it does:- Integration: Server to Extole — your backend submits events, looks up people, and reads reward state. Server-to-server, authenticated with a bearer token.
- Integration: Consumer to Extole — your website or app calls Extole directly on behalf of an end user, to fire consumer events, render zones, and read the consumer’s own profile. Backs the Extole SDKs.
- Management — configure programs the way you would in My Extole: campaigns, audiences, reward suppliers, reporting, and webhooks. Server-to-server, authenticated with a bearer token.
Integration: Server to Extole
The Server to Extole API is a collection of REST-style endpoints your backend uses to send program-related events, look up person information, and read reward state. Typical operations include submitting events (POST /v6/events synchronously, or POST /v6/async-events for high-volume pipelines), retrieving a person (GET /v5/persons/{person_id}), and listing rewards (GET /v2/rewards).
Host and Authentication
Server to Extole calls go tohttps://api.extole.io and authenticate server-to-server with the standard Authorization: Bearer <token> header. Learn more in the Authentication Overview.
Key Management
Your access tokens are managed through My Extole in the Security Center.Management
The Management API configures the platform programmatically — most operations available in My Extole are reachable here as well. Use it to manage campaigns (GET /v2/campaigns), audiences (GET /v1/audiences), and reward suppliers (GET /v6/reward-suppliers), to run reporting asynchronously (POST /v4/reports, then poll the returned report ID), and to configure webhooks.
Host and Authentication
Management calls go tohttps://api.extole.io and authenticate server-to-server with the standard Authorization: Bearer <token> header. Tokens are managed in the Security Center.
Integration: Consumer to Extole
The Consumer to Extole API employs REST-style endpoints that use an access token specific to a single user to make all calls. It is designed to operate publicly on the internet between an end-user’s browser or app and Extole — not behind a login or a secure server-to-server connection — and there is no login call. Consumer requests use the standard GET, PUT, POST, and DELETE methods. All PUT/POST requests should include the headersContent-Type: application/json and Accept: application/json.
Important NoteExtole’s JavaScript library (
core.js) and the mobile SDKs are the most common way to build web and app experiences, and they manage the consumer token lifecycle for you. Most clients never need to call the Consumer API directly.How to Call the Consumer API
Consumer calls go to your program domain, not the sharedapi.extole.io host. For example, the Create Token endpoint is https://{brand}.extole.io/api/v5/token. Replace {brand} with your program domain — if Test Company called this endpoint, they would use https://testcompany.extole.io/api/v5/token.
You can find your program domain in the Tech Center of My Extole.
Access Tokens
Access tokens are the primary method for identifying the user calling into the Consumer API. There are three ways to pass one:- As a URL parameter named
access_token - In an
Authorization: Bearer <token>header - In a cookie named
access_token
- Anonymous — a device token that records a journey history of activity but is not tied to an identified profile.
- Identified — a token becomes identified when an email address or
partner_user_idis passed on an API request, connecting the device token to an identity profile in the program. Identified tokens may add journey information to the profile, but they cannot change profile properties and have no access to private profile data (name, friend information, reward information). - Verified — a token may be verified through email verification or a backend server-to-server verification. A verified token has full access to the profile, including the ability to update profile properties.
Polling Pattern
The Consumer API returns every request in under 100ms (typically faster); there is never a blocking operation at Extole. Any request whose logic may take longer than 100ms instead returns a polling ID, with a related method to poll using that identifier until the operation completes.Debugging
Extole accepts theX-Extole-Debug header to set the debug level of a call, from one to three.