API Reference
You need an Experiture account to use this API
If you have platform access, sign in to portal.experiture.com and create an OAuth client under My Organization → API Access. If you're a developer without full platform access, ask your Experiture Account Administrator for OAuth credentials, or email support@experiture.com.
The Experiture Public API is a versioned public REST + JSON interface to the platform — covering CDP data ingestion, audience and list management, the full Campaigns lifecycle, and Content Studio.
Base URL: https://api.experiture.ai/public/v1
Current version: v1 (stable). Breaking changes will ship under a new path prefix — your v1 integrations will keep working.
Conventions
Request format
- Protocol: HTTPS only. HTTP requests are rejected.
- Method:
POSTfor writes,GETfor reads,PATCHfor partial updates,DELETEto remove. - Content type:
application/json; charset=utf-8for all bodies. - Casing: request bodies use
camelCase. Object field names follow your workspace schema (oftensnake_case).
Response envelope
Every response uses a consistent envelope:
{ "success": true, "data": { /* ... */ }, "correlationId": "<uuid>" }Error responses replace data with error:
{
"success": false,
"correlationId": "<uuid>",
"error": {
"code": "CDP_ETL.<DOMAIN>.<ISSUE>",
"message": "records[2].email: invalid email format",
"details": { "path": "records[2].email", "value": "not-an-email" },
"remediation": "..."
}
}Correlation ID
Every response includes an x-correlation-id header. Include it when contacting support — it lets us trace the request end-to-end.
Idempotency
Write endpoints accept an optional Idempotency-Key header (UUID v4). A request with the same key and the same body returns the cached original response for 24 hours. Use this to safely retry network failures.
Pagination
Different API families use different pagination styles:
CDP APIs (Lists) use page-based pagination:
GET /lists?page=1&pageSize=50
→ { "data": { "items": [...], "page": 1, "pageSize": 50, "total": 238 } }Campaigns API uses offset pagination:
GET /campaigns?limit=50&offset=0
→ { "data": [...], "pagination": { "total": 238, "limit": 50, "offset": 0 } }Next page: increment offset by limit until offset ≥ total.
Endpoints
Data Ingestion
| Resource | Purpose |
|---|---|
| Records | General-purpose record writes (single + batch) for any object. |
| Profiles | Convenience wrapper for profile upserts with identity resolution. |
| Import Jobs | Asynchronous loads for large files (CSV, JSONL, Parquet). |
| Metadata | Inspect object schemas and field types. |
Audiences & Lists
| Resource | Purpose |
|---|---|
| Lists | Static collections of record IDs (suppression lists, seed cohorts). |
| Audiences | Preview rule-based dynamic segments. |
Campaigns
| Resource | Purpose |
|---|---|
| Overview | Lifecycle diagram, scope reference, all 16 endpoints. |
| Campaign Object | Create, list, get, update, delete, archive, clone. |
| Audience Binding | Configure who receives the campaign. |
| Content Binding | Assign template and sender. |
| Schedule & Send | Set timing intent, schedule jobs, send immediately. |
| Preflight | Validate readiness before execution. |
| Status & Metrics | Execution state, pipeline counts, setup summary. |
Content Studio
| Resource | Purpose |
|---|---|
| Content Studio | Templates, proofs, sender profiles — coming soon. |
Platform
| Resource | Purpose |
|---|---|
| Authentication | OAuth clients, Bearer tokens, scopes. |
| Rate Limits | Per-token quotas and backoff strategy. |
Authentication
All requests require a JWT Bearer token obtained via the OAuth 2.0 client credentials grant. Create an OAuth client in the console under My Organization → API Access, then exchange the client credentials for an access token. See Authentication for the full flow and scope reference.
OpenAPI Spec
The full machine-readable spec is available at /openapi.json. Use it to generate clients in any language, or to drive automated schema tests.
Stability & Deprecation
- Additive changes (new endpoints, new response fields, new optional request fields) may ship at any time. Clients must tolerate unknown fields.
- Breaking changes ship under a new version prefix. Breaking changes are versioned and announced in advance.
- Deprecations are announced in the changelog (opens in a new tab) with advance notice before removal.
Getting Started
New to the API? Follow Getting Started — it walks you from OAuth client creation to your first successful upsert in under 5 minutes.