Skip to Content
API ReferenceOverview

API Reference

The Zeotap REST API provides programmatic access to all platform resources. Use it to manage warehouses, models, destinations, Reverse ETL pipelines, audiences, identity resolution graphs, orchestrations, streams, and more.

Base URL

All API requests are made to your Zeotap instance:

https://agentic.zeotap.com/api/v1

The API is versioned via the URL path. The current version is v1.

Request Format

  • All request bodies must be JSON with Content-Type: application/json
  • All responses are JSON with Content-Type: application/json
  • Resource paths follow the pattern /api/v1/workspaces/{workspaceId}/{resource}
  • Timestamps are ISO 8601 format (e.g., 2024-01-15T09:30:00Z)
  • IDs are UUIDs (e.g., 550e8400-e29b-41d4-a716-446655440000)

Authentication

Every request requires two headers:

Authorization: Bearer <token> X-Workspace-ID: <workspace-id>

The Authorization header accepts either a Firebase ID token (for browser/UI clients) or an API key (for server-to-server integrations). See Authentication for details.

List Responses

Most list endpoints return a JSON array of the resource:

[ { "id": "550e8400-…", "name": "Customers", "…": "…" }, { "id": "660e8400-…", "name": "Orders", "…": "…" } ]

A handful of endpoints that can return long histories take limit and offset query parameters instead, and say so on their own page — the AI audit log, the workspace audit log, agent sessions, deletion-rule runs and snapshot history among them. Where a limit is capped, the cap is documented with the endpoint; the workspace and AI audit logs default to 50 per page and refuse more than 100.

Endpoints that cap their result set without paginating say so too — sync run history returns the most recent 50 runs, for instance.

Error Format

Error responses use a consistent JSON structure:

{ "error": "human-readable error message" }

HTTP Status Codes

CodeMeaningWhen
200OKSuccessful read or update
201CreatedSuccessful resource creation
400Bad RequestInvalid request body, missing required fields, unsupported values
401UnauthorizedMissing or invalid authentication token
403ForbiddenValid token but insufficient permissions for the requested resource
404Not FoundResource does not exist or is not accessible in this workspace
409ConflictResource already exists (duplicate name, slug, etc.)
422Unprocessable EntityRequest is well-formed but semantically invalid (e.g., referencing a non-existent source)
500Internal Server ErrorUnexpected server error

Common Response Patterns

Successful Deletion

{ "status": "deleted" }

Single Resource

{ "id": "550e8400-e29b-41d4-a716-446655440000", "workspace_id": "...", "name": "...", "created_at": "2024-01-15T09:30:00Z", "updated_at": "2024-01-15T09:30:00Z" }

Resources

ResourceBase PathDescription
Warehouses/api/v1/workspaces/{id}/sourcesData warehouse connections
Models/api/v1/workspaces/{id}/modelsSQL-defined datasets
Destinations/api/v1/workspaces/{id}/destinationsData write targets
Reverse ETL/api/v1/workspaces/{id}/syncsReverse ETL pipelines from models to destinations
Computed Attributes/api/v1/workspaces/{id}/traitsComputed entity attributes
Audiences/api/v1/workspaces/{id}/audiencesSegmentation queries
Syncs/api/v1/workspaces/{id}/audience-syncsAudience activation syncs to destinations
Identity Resolution/api/v1/workspaces/{id}/identity-graphsIdentity graphs and golden records
Orchestrations/api/v1/workspaces/{id}/journeysMulti-step workflows
Streams/api/v1/workspaces/{id}/eventsReal-time event collection
Loaders/api/v1/workspaces/{id}/loadersInbound loaders
Governance/api/v1/workspaces/{id}/...Roles, groups, destination policies, access policies
Insights/api/v1/workspaces/{id}/insightsPlatform analytics
Workspaces/api/v1/workspacesMulti-tenant workspaces
Organizations/api/v1/organizationsCompany-level entities
API Keys/api/v1/workspaces/{id}/api-keysAPI key management
Last updated on