API Reference
Overview

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: POST for writes, GET for reads, PATCH for partial updates, DELETE to remove.
  • Content type: application/json; charset=utf-8 for all bodies.
  • Casing: request bodies use camelCase. Object field names follow your workspace schema (often snake_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

ResourcePurpose
RecordsGeneral-purpose record writes (single + batch) for any object.
ProfilesConvenience wrapper for profile upserts with identity resolution.
Import JobsAsynchronous loads for large files (CSV, JSONL, Parquet).
MetadataInspect object schemas and field types.

Audiences & Lists

ResourcePurpose
ListsStatic collections of record IDs (suppression lists, seed cohorts).
AudiencesPreview rule-based dynamic segments.

Campaigns

ResourcePurpose
OverviewLifecycle diagram, scope reference, all 16 endpoints.
Campaign ObjectCreate, list, get, update, delete, archive, clone.
Audience BindingConfigure who receives the campaign.
Content BindingAssign template and sender.
Schedule & SendSet timing intent, schedule jobs, send immediately.
PreflightValidate readiness before execution.
Status & MetricsExecution state, pipeline counts, setup summary.

Content Studio

ResourcePurpose
Content StudioTemplates, proofs, sender profiles — coming soon.

Platform

ResourcePurpose
AuthenticationOAuth clients, Bearer tokens, scopes.
Rate LimitsPer-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.