# Extole Documentation: API Reference Management API

> Guides, product documentation, and API reference for the Extole platform.

## Management API

### Audiences

- [List audiences](https://docs.extole.com/api-reference/audiences/list-audiences.md): Returns the client's audience definitions sorted by creation date, newest first. By default archived audiences are excluded; pass `include_archived=true` to include them. Use `limit` and `offset` to page (defaults: `limit=1000`, `offset=0`). Each entry is the editable definition - for runtime target…
- [Create audience](https://docs.extole.com/api-reference/audiences/create-audience.md): Creates a new audience definition. `name` is required; `enabled`, `tags`, and `component_references` are optional. New audiences default to enabled. Tags must be 255 characters or fewer each; the resolved name must also be 255 characters or fewer. Returns the created audience.
- [List built audiences](https://docs.extole.com/api-reference/audiences/list-built-audiences.md): Returns the rendered (built) audience snapshots that the runtime evaluates against - the resolved name, enabled flag, tags, and component references for every audience the client owns. Filter by `name` (supports a trailing `*` wildcard), by `enabled` (`ENABLED`, `DISABLED`, or `ANY`), and by archive…
- [Get audience](https://docs.extole.com/api-reference/audiences/get-audience.md): Returns the editable audience definition for the supplied `audience_id`, including its name, enabled state, tags, and the campaign components that reference it. For the rendered (runtime) snapshot use `GET /v1/audiences/{audience_id}/built` instead.
- [Update audience](https://docs.extole.com/api-reference/audiences/update-audience.md): Updates an existing audience. Only fields supplied in the body are changed; omitted fields are left untouched. Sending `null` for `name` returns `400 invalid_null` because `name` is a required attribute on the audience. Returns the updated audience.
- [Archive audience](https://docs.extole.com/api-reference/audiences/archive-audience.md): Soft-archives the audience. Archived audiences disappear from default `GET /v1/audiences` and `GET /v1/audiences/built` responses; pass `include_archived=true` to surface them. Reversible via `POST /v1/audiences/{audience_id}/unarchive`. Fails if the audience is still referenced by a campaign-contro…
- [Get built audience](https://docs.extole.com/api-reference/audiences/get-built-audience.md): Returns the rendered (built) snapshot for the supplied `audience_id`. The snapshot has the same shape as `GET /v1/audiences/{audience_id}/built` items in the list response and is what the runtime evaluates against during targeting.
- [List audience member IDs](https://docs.extole.com/api-reference/audiences/list-audience-member-ids.md): Returns the person IDs of all current members of the specified audience.
- [Download audience members](https://docs.extole.com/api-reference/audiences/download-audience-members.md): Downloads the full member list for the specified audience. Append a format extension (`.csv`, `.json`, `.xlsx`) to select the download format.
- [List audience members](https://docs.extole.com/api-reference/audiences/list-audience-members.md): Returns detailed profiles for all current members of the specified audience.
- [List audience operations](https://docs.extole.com/api-reference/audiences/list-audience-operations.md): Returns all operations for the specified audience, optionally filtered by the provided query parameters.
- [Create an audience operation](https://docs.extole.com/api-reference/audiences/create-an-audience-operation.md): Creates a new operation for the specified audience. An operation modifies audience membership by adding, removing, or syncing members from a data source.
- [Get an audience operation](https://docs.extole.com/api-reference/audiences/get-an-audience-operation.md): Returns the audience operation identified by its operation ID for the specified audience.
- [Get audience operation state](https://docs.extole.com/api-reference/audiences/get-audience-operation-state.md): Returns the current state of the specified audience operation, including progress counters and any error details.
- [Get audience operation debug state](https://docs.extole.com/api-reference/audiences/get-audience-operation-debug-state.md): Returns the detailed debug state of the specified audience operation, including internal processing information. Restricted to client superusers.
- [Get audience operation with details](https://docs.extole.com/api-reference/audiences/get-audience-operation-with-details.md): Returns the audience operation with its full detail view, including data source configuration and processing statistics.
- [Get audience membership statistics](https://docs.extole.com/api-reference/audiences/get-audience-membership-statistics.md): Returns membership statistics for the specified audience, including total member count and any size change since the last operation.
- [Delete audience](https://docs.extole.com/api-reference/audiences/delete-audience.md): Hard-deletes the audience. Unlike `DELETE /v1/audiences/{audience_id}` (which archives and is reversible), a deleted audience cannot be recovered. Fails with the same association errors as archive: the audience must be detached from any campaign-controller membership trigger, create- or remove-membe…
- [Cancel an audience operation](https://docs.extole.com/api-reference/audiences/cancel-an-audience-operation.md): Cancels a pending or in-progress audience operation identified by its operation ID.
- [Retry an audience operation](https://docs.extole.com/api-reference/audiences/retry-an-audience-operation.md): Retries a failed audience operation identified by its operation ID.
- [Unarchive audience](https://docs.extole.com/api-reference/audiences/unarchive-audience.md): Restores a previously archived audience so it appears in default `GET /v1/audiences` and `GET /v1/audiences/built` responses again. Fails with `400 audience_not_found` if the audience does not exist or has been hard-deleted via `POST /v1/audiences/{audience_id}/delete`.

### Authentication

- [Debug consumer access token](https://docs.extole.com/api-reference/authentication/debug-consumer-access-token.md): Returns metadata for a consumer (person) access token by value, including tokens that are expired or invalidated. Distinct from client access token debug (`GET /v4/tokens/{token}/debug`) and managed API tokens (`/v4/tokens/managed`). Requires a user access token with the `CLIENT_ADMIN` scope.
- [List managed access tokens](https://docs.extole.com/api-reference/authentication/list-managed-access-tokens.md): Returns all managed API access tokens for the client.
- [Create a managed access token](https://docs.extole.com/api-reference/authentication/create-a-managed-access-token.md): Creates a new server-generated managed API access token with configurable scopes and expiry. Returns the created token with its server-assigned id.
- [Delete a managed access token](https://docs.extole.com/api-reference/authentication/delete-a-managed-access-token.md): Revokes and removes the managed API access token for the specified id.

### Batch Jobs

- [List jobs](https://docs.extole.com/api-reference/batch-jobs/list-jobs.md): Returns all batch jobs configured for the client.
- [Create a job](https://docs.extole.com/api-reference/batch-jobs/create-a-job.md): Creates a batch job. Optional triggers and tasks may be supplied in the same request.
- [Get a job](https://docs.extole.com/api-reference/batch-jobs/get-a-job.md): Returns the job for the specified id, including its triggers and tasks.
- [Update a job](https://docs.extole.com/api-reference/batch-jobs/update-a-job.md): Updates top-level job fields. Trigger and task changes use the sub-endpoints.
- [Delete a job](https://docs.extole.com/api-reference/batch-jobs/delete-a-job.md): Soft-deletes the job and cascades soft-delete to its triggers and tasks.
- [Get the built job](https://docs.extole.com/api-reference/batch-jobs/get-the-built-job.md): Returns the built job for the specified id, including its built triggers and tasks with the resolved parent job id and component references.
- [List tasks](https://docs.extole.com/api-reference/batch-jobs/list-tasks.md): Returns all tasks for the specified job, sorted by order. Unattached tasks have no order relative to each other.
- [Add a task](https://docs.extole.com/api-reference/batch-jobs/add-a-task.md): Adds a task to the specified job. Order defaults to max+1 when omitted. A task added under `unattached` is stored without a job. When order is omitted it defaults to 0; when provided, the requested order is stored until the task is attached to a job.
- [Get a task](https://docs.extole.com/api-reference/batch-jobs/get-a-task.md): Returns the task for the specified id.
- [Update a task](https://docs.extole.com/api-reference/batch-jobs/update-a-task.md): Updates the task. The request task type must match the stored task.
- [Delete a task](https://docs.extole.com/api-reference/batch-jobs/delete-a-task.md): Soft-deletes the task and compacts remaining order values. Deleting an unattached task leaves other tasks untouched.
- [List triggers](https://docs.extole.com/api-reference/batch-jobs/list-triggers.md): Returns all triggers for the specified job.
- [Add a trigger](https://docs.extole.com/api-reference/batch-jobs/add-a-trigger.md): Adds a trigger to the specified job. A trigger added under `unattached` is stored without a job and does not fire until it is attached to a job.
- [Get a trigger](https://docs.extole.com/api-reference/batch-jobs/get-a-trigger.md): Returns the trigger for the specified id.
- [Update a trigger](https://docs.extole.com/api-reference/batch-jobs/update-a-trigger.md): Updates the trigger. The request trigger type must match the stored trigger.
- [Delete a trigger](https://docs.extole.com/api-reference/batch-jobs/delete-a-trigger.md): Soft-deletes the trigger.
- [List job execution history](https://docs.extole.com/api-reference/batch-jobs/list-job-execution-history.md): Returns aggregated batch job execution history for the client.
- [Get a job execution history entry](https://docs.extole.com/api-reference/batch-jobs/get-a-job-execution-history-entry.md): Returns a single batch job execution history entry by execution chain id.

### Batch Jobs (Legacy)

- [List batch jobs](https://docs.extole.com/api-reference/batch-jobs-legacy/list-batch-jobs.md): Returns a paginated list of batch jobs for the authenticated client. Filter by `name`, `event_name`, `tags`, `status`, or `user_id`. Results are ordered by creation date descending. Default page size is 100.
- [Create a batch job](https://docs.extole.com/api-reference/batch-jobs-legacy/create-a-batch-job.md): Creates a new asynchronous batch job that reads its data source row-by-row and dispatches a consumer event for each row. The data source can be a previously run report, an audience list, or an uploaded file asset (CSV, PSV, or JSON). The job begins processing immediately after creation; poll `GET /v…
- [Get a batch job](https://docs.extole.com/api-reference/batch-jobs-legacy/get-a-batch-job.md): Returns the full record for a single batch job, including current `status`, `success_rows`, `failed_rows`, and data source configuration. Poll this endpoint to monitor job progress until `status` reaches a terminal state: `DONE`, `FAILED`, `CANCELED`, or `EXPIRED`.
- [Update a batch job](https://docs.extole.com/api-reference/batch-jobs-legacy/update-a-batch-job.md): Updates the mutable fields of an existing batch job: `name`, `tags`, and `scopes`. The job must not be in a terminal state (`DONE`, `FAILED`, `CANCELED`, or `EXPIRED`). Data source, event name, and column mappings are immutable after creation.
- [Delete a batch job](https://docs.extole.com/api-reference/batch-jobs-legacy/delete-a-batch-job.md): Permanently deletes a batch job record. The job must be in a terminal state (`DONE`, `FAILED`, `CANCELED`, or `EXPIRED`). This action is irreversible; the job record cannot be recovered after deletion.
- [Cancel a batch job](https://docs.extole.com/api-reference/batch-jobs-legacy/cancel-a-batch-job.md): Requests cancellation of a batch job. The job transitions to `CANCELED` status. Only jobs in a non-terminal state (`PENDING`, `QUEUED`, `IN_PROGRESS`, or `DISPATCHING`) can be canceled.
- [Expire a batch job](https://docs.extole.com/api-reference/batch-jobs-legacy/expire-a-batch-job.md): Marks a completed batch job as expired, releasing associated resources. Only jobs in terminal state (`DONE`, `FAILED`, or `CANCELED`) can be expired. Once expired, the job record remains queryable but its data source reference is released.

### Blocks

- [List blocks](https://docs.extole.com/api-reference/blocks/list-blocks.md): Returns all content blocks for the client.
- [Create a block](https://docs.extole.com/api-reference/blocks/create-a-block.md): Creates a new named content block used as a reusable fragment in campaign experiences. Returns the created block with its server-assigned id.
- [List global blocks](https://docs.extole.com/api-reference/blocks/list-global-blocks.md): Returns all globally available content blocks that can be shared across clients.
- [Get a block](https://docs.extole.com/api-reference/blocks/get-a-block.md): Returns the content block for the specified id.
- [Delete a block](https://docs.extole.com/api-reference/blocks/delete-a-block.md): Removes the content block for the specified id. Returns the deleted block.
- [Test a block](https://docs.extole.com/api-reference/blocks/test-a-block.md): Evaluates the block configuration against a test payload without persisting any changes. Returns the rendered output and any validation errors.

### Campaigns

- [List campaign summaries](https://docs.extole.com/api-reference/campaigns/list-campaign-summaries.md): Returns lightweight read-only summaries of campaigns, including id, name, state, and dates. Supports filtering via query parameters.
- [Get a campaign summary](https://docs.extole.com/api-reference/campaigns/get-a-campaign-summary.md): Returns a lightweight read-only summary of the specified campaign, including id, name, state, and dates.
- [Get a campaign summary by version](https://docs.extole.com/api-reference/campaigns/get-a-campaign-summary-by-version.md): Returns a lightweight read-only summary of the specified campaign, including id, name, state, and dates.
- [List campaigns](https://docs.extole.com/api-reference/campaigns/list-campaigns.md): Returns campaigns for the calling client, filtered and ordered by the supplied query parameters. Supports filtering by state (draft, published, archived), label, and date range. Use `GET /v2/campaigns/built` for fully evaluated runtime forms.
- [Create a campaign](https://docs.extole.com/api-reference/campaigns/create-a-campaign.md): Creates a new campaign in DRAFT state and returns the persisted record with its server-assigned id. The request body specifies the initial name, labels, and global component references. Add components, controllers, and flow steps by subsequent PUT calls on the returned campaign id. To import a campa…
- [List built campaigns](https://docs.extole.com/api-reference/campaigns/list-built-campaigns.md): Returns campaigns in their fully evaluated (built) runtime form, with all evaluatable fields resolved. Use this when the calling system needs effective component values and settings rather than source definitions. Supports the same filtering as `GET /v2/campaigns`.
- [List deleted campaigns](https://docs.extole.com/api-reference/campaigns/list-deleted-campaigns.md): Returns the campaigns that have been soft-deleted for the calling client. Deleted campaigns are retained for audit and recovery purposes. Use `POST /v2/campaigns/{id}/undelete` to restore a deleted campaign.
- [List duplicatable campaigns](https://docs.extole.com/api-reference/campaigns/list-duplicatable-campaigns.md): Returns the campaigns that the calling client is permitted to duplicate. Duplicatable campaigns include both the client's own draft and published campaigns and any shared template campaigns. Use `POST /v2/campaigns/{id}/duplicate` to create a copy.
- [Get a campaign](https://docs.extole.com/api-reference/campaigns/get-a-campaign.md): Returns the source definition of the campaign. Use `GET /v2/campaigns/{id}/built` for the fully evaluated runtime form.
- [Edit a campaign](https://docs.extole.com/api-reference/campaigns/edit-a-campaign.md): Applies a partial update to the campaign. Only the fields present in the body are changed; omitted fields are left intact. Returns `400 campaign_concurrent_update` if the campaign has changed since the caller last read it. To replace from a ZIP archive, use `PUT /v2/campaigns/{campaignId}/upload-bun…
- [Delete a campaign](https://docs.extole.com/api-reference/campaigns/delete-a-campaign.md): Soft-deletes the campaign. Deleted campaigns are excluded from standard listings but are recoverable via `POST /v2/campaigns/{id}/undelete`. Returns the deleted campaign record. Requires the campaign to be in a state that permits deletion (e.g. DRAFT or ARCHIVED).
- [Get a built campaign](https://docs.extole.com/api-reference/campaigns/get-a-built-campaign.md): Returns the campaign in its fully evaluated (built) runtime form, with all evaluatable fields resolved against current component and setting values.
- [Download a campaign bundle](https://docs.extole.com/api-reference/campaigns/download-a-campaign-bundle.md): Downloads the campaign as a ZIP archive containing all campaign assets, component definitions, and configuration files. The archive can be used to back up a campaign or to import it into another client via `POST /v2/campaigns/upload-bundle` or `PUT /v2/campaigns/{id}/upload-bundle`.
- [Get campaign version history](https://docs.extole.com/api-reference/campaigns/get-campaign-version-history.md): Returns the campaign version history (an index of versions with state and timestamps), ordered from most recent to oldest. Supports `limit` and `offset` query parameters for pagination. Use `GET /v2/campaigns/{id}/version/{version}` to retrieve the full campaign definition for a specific version.
- [Get a campaign by version](https://docs.extole.com/api-reference/campaigns/get-a-campaign-by-version.md): Returns the full source definition of the campaign at the specified version. Use `GET /v2/campaigns/{id}/version/{version}/built` for the fully evaluated runtime form, or `GET /v2/campaigns/{id}/versions` for version history metadata.
- [Get a built campaign by version](https://docs.extole.com/api-reference/campaigns/get-a-built-campaign-by-version.md): Returns the campaign in its fully evaluated (built) runtime form, with all evaluatable fields resolved against current component and setting values.
- [Download a campaign bundle by version](https://docs.extole.com/api-reference/campaigns/download-a-campaign-bundle-by-version.md): Downloads the campaign as a ZIP archive containing all campaign assets, component definitions, and configuration files. The archive can be used to back up a campaign or to import it into another client via `POST /v2/campaigns/upload-bundle` or `PUT /v2/campaigns/{id}/upload-bundle`.
- [Rename a campaigns program label](https://docs.extole.com/api-reference/campaigns/rename-a-campaigns-program-label.md): Renames the specified program label across all campaigns that use it.
- [Upload a new campaign from archive](https://docs.extole.com/api-reference/campaigns/upload-a-new-campaign-from-archive.md): Creates a new campaign by importing a campaign ZIP archive previously exported via `GET /v2/campaigns/{id}.zip`. All components, controllers, flow steps, and creative assets contained in the archive are imported and the new campaign is created in DRAFT state with a server-assigned id. For JSON creat…
- [Archive a campaign](https://docs.extole.com/api-reference/campaigns/archive-a-campaign.md): Moves the campaign to archived state, hiding it from default campaign listings while retaining it for reporting and recovery. Use `POST /v2/campaigns/{id}/unarchive` to restore an archived campaign to active state.
- [Discard a campaign draft](https://docs.extole.com/api-reference/campaigns/discard-a-campaign-draft.md): Discards the draft version of the specified campaign, reverting it to the last published state. Uncommitted changes made since the last publish are lost. If no published version exists, the campaign remains in draft with its changes removed.
- [Duplicate a campaign](https://docs.extole.com/api-reference/campaigns/duplicate-a-campaign.md): Creates a new draft campaign by deep-copying the campaign. The copy inherits all components, settings, and labels; the optional request body lets callers override the new campaign's name and label list. The new campaign is created in DRAFT state regardless of the source's state.
- [End a campaign](https://docs.extole.com/api-reference/campaigns/end-a-campaign.md): Transitions the campaign to ended state, permanently closing it to new participants. Ended campaigns are retained for reporting and audit; use `POST /v2/campaigns/{id}/archive` to hide them from active lists. Supports an optional schedule request body to defer the end to a future time.
- [Launch a campaign in burst mode](https://docs.extole.com/api-reference/campaigns/launch-a-campaign-in-burst-mode.md): Transitions the campaign into burst mode, which is a high-throughput live state designed for time-limited promotional surges. Validates all campaign components and reward rules before the transition. Returns the updated campaign on success.
- [Launch a campaign in test mode](https://docs.extole.com/api-reference/campaigns/launch-a-campaign-in-test-mode.md): Transitions the campaign into test mode, enabling a limited rollout to test participants without affecting production traffic. Validates all campaign components, controllers, and reward rules before the transition. Returns the updated campaign on success.
- [Set a campaign live](https://docs.extole.com/api-reference/campaigns/set-a-campaign-live.md): Transitions the campaign directly to live state, bypassing the normal test-mode phase. Validates all components and reward rules before the transition. Returns the updated campaign. Use `POST /v2/campaigns/{id}/publish` for the standard publish flow with full validation.
- [Lock a campaign](https://docs.extole.com/api-reference/campaigns/lock-a-campaign.md): Locks the campaign to prevent concurrent edits. While a campaign is locked, attempts to edit it by other callers are rejected with `400 campaign_locked`. The lock is associated with the caller's access token; use `POST /v2/campaigns/{id}/unlock` to release it.
- [Make a campaign the latest draft](https://docs.extole.com/api-reference/campaigns/make-a-campaign-the-latest-draft.md): Promotes the campaign to be the latest draft, replacing any existing latest-draft pointer. Useful for rolling back to a prior version that should become the new active draft for editing. The campaign must be in a state that permits draft promotion.
- [Make a campaign latest while preserving state](https://docs.extole.com/api-reference/campaigns/make-a-campaign-latest-while-preserving-state.md): Promotes the campaign to the latest pointer while keeping the campaign's current lifecycle state (draft, published, etc.) unchanged. Unlike `make-latest-draft` or `make-latest-published`, this transition preserves the state the campaign was already in rather than changing it.
- [Make a campaign the latest published](https://docs.extole.com/api-reference/campaigns/make-a-campaign-the-latest-published.md): Promotes the campaign to be the latest published version, replacing the existing latest-published pointer. Use to roll back live traffic to a prior published version without going through a full publish cycle. The campaign must already be in published state.
- [Pause a campaign](https://docs.extole.com/api-reference/campaigns/pause-a-campaign.md): Transitions the campaign to paused state, temporarily halting participant eligibility and reward processing. The campaign can be resumed by publishing it again. Supports an optional schedule request body to defer the pause to a future time.
- [Publish a campaign](https://docs.extole.com/api-reference/campaigns/publish-a-campaign.md): Validates, builds, and publishes the campaign, making it live for participants. The optional request body lets callers override the publish schedule. Returns the published campaign. Validates all components, controllers, flow steps, and reward rules before publishing; validation failures return desc…
- [Schedule a campaign state change](https://docs.extole.com/api-reference/campaigns/schedule-a-campaign-state-change.md): Schedules the campaign for a future state transition (e.g. go-live or end) at the datetime specified in the request body. The campaign must be published before it can be scheduled. Replaces any existing schedule on the same campaign.
- [Stop a campaign](https://docs.extole.com/api-reference/campaigns/stop-a-campaign.md): Immediately stops the campaign, halting all active processing and participant eligibility. Unlike pause, a stopped campaign must be republished to resume. Supports an optional schedule request body to defer the stop to a future time.
- [Unarchive a campaign](https://docs.extole.com/api-reference/campaigns/unarchive-a-campaign.md): Restores the campaign from archived state back to its previous active state. After unarchiving, the campaign resumes appearing in standard listings and is eligible for editing or publishing.
- [Undelete a campaign](https://docs.extole.com/api-reference/campaigns/undelete-a-campaign.md): Recovers a soft-deleted campaign, restoring it to an active state. Requires the `CLIENT_SUPERUSER` scope. After recovery the campaign appears again in standard listings and can be edited or published.
- [Unlock a campaign](https://docs.extole.com/api-reference/campaigns/unlock-a-campaign.md): Releases the edit lock on the campaign. After unlocking, other callers can edit the campaign again. Returns `400 campaign_not_locked` if the campaign is not currently locked by the caller.
- [Update campaigns by program label](https://docs.extole.com/api-reference/campaigns/update-campaigns-by-program-label.md): Applies the specified update to all campaigns associated with the given program label.
- [Update a campaign from archive](https://docs.extole.com/api-reference/campaigns/update-a-campaign-from-archive.md): Replaces the content of the campaign with a campaign ZIP archive. All components, controllers, flow steps, and creative assets in the archive overwrite the existing campaign definition. Callers should supply the version they last read as the path `version` optimistic-lock token; returns `400 campaig…

### Components

- [List components](https://docs.extole.com/api-reference/components/list-components.md): Returns all components visible to the current client. Components are the reusable building blocks that campaigns assemble — creatives, content blocks, and sub-experiences.
- [Create a component](https://docs.extole.com/api-reference/components/create-a-component.md): Creates a component. `name` is the only required field; `settings`, `types` and `tags` may be supplied here or added later with `PUT /v1/components/{component_id}`.
- [List built components](https://docs.extole.com/api-reference/components/list-built-components.md): Returns all components in their fully evaluated runtime form.
- [List duplicatable components](https://docs.extole.com/api-reference/components/list-duplicatable-components.md): Returns all components that are eligible for duplication by the current client.
- [List built duplicatable components](https://docs.extole.com/api-reference/components/list-built-duplicatable-components.md): Returns all duplicatable components in their fully evaluated runtime form.
- [Get a component](https://docs.extole.com/api-reference/components/get-a-component.md): Returns the component.
- [Update a component](https://docs.extole.com/api-reference/components/update-a-component.md): Updates a component, including its `settings`. Top-level fields omitted from the body are left unchanged — you do not need to send the whole component to change its name, display name, description or tags.
- [Delete a component](https://docs.extole.com/api-reference/components/delete-a-component.md): Recursively deletes the specified component and all its children. If the deleted component is the root component of a campaign, the entire campaign is archived.
- [Get a built component](https://docs.extole.com/api-reference/components/get-a-built-component.md): Returns the fully evaluated (built) runtime form of the specified component, with expression fields resolved.
- [Get component anchors](https://docs.extole.com/api-reference/components/get-component-anchors.md): Returns the anchor details for the specified component.
- [Get available component upgrades](https://docs.extole.com/api-reference/components/get-available-component-upgrades.md): Returns a map of available upgrade targets for the specified component, keyed by target component id.
- [Diff two components](https://docs.extole.com/api-reference/components/diff-two-components.md): Returns a diff between two component versions, showing added, removed, and changed settings.
- [Download translatable component variables](https://docs.extole.com/api-reference/components/download-translatable-component-variables.md): Downloads the translatable variable values for the specified component for localisation.
- [List component assets](https://docs.extole.com/api-reference/components/list-component-assets.md): Returns all file assets attached to the component identified by `component_id`.
- [Create a component asset](https://docs.extole.com/api-reference/components/create-a-component-asset.md): Uploads a new file asset to the component identified by `component_id`. Supply asset metadata in the `asset` form field and file content in the `file` form field.
- [List built component assets](https://docs.extole.com/api-reference/components/list-built-component-assets.md): Returns the built (compiled) asset representations for all assets on the specified component.
- [Get a component asset](https://docs.extole.com/api-reference/components/get-a-component-asset.md): Returns metadata for the asset identified by `asset_id` on the specified component.
- [Update a component asset](https://docs.extole.com/api-reference/components/update-a-component-asset.md): Replaces or updates the asset identified by `asset_id` on the specified component. Supply updated metadata in the `asset` form field and optional new file content in `file`.
- [Delete a component asset](https://docs.extole.com/api-reference/components/delete-a-component-asset.md): Removes the asset identified by `asset_id` from the specified component and returns the deleted asset metadata.
- [Get a built component asset](https://docs.extole.com/api-reference/components/get-a-built-component-asset.md): Returns the built (compiled) representation of the asset identified by `asset_id` on the specified component.
- [Get component asset content](https://docs.extole.com/api-reference/components/get-component-asset-content.md): Streams the raw file content of the asset identified by `asset_id` on the specified component.
- [Get a component by version](https://docs.extole.com/api-reference/components/get-a-component-by-version.md): Returns the component.
- [Get a built component by version](https://docs.extole.com/api-reference/components/get-a-built-component-by-version.md): Returns the fully evaluated (built) runtime form of the specified component, with expression fields resolved.
- [Get component anchors by version](https://docs.extole.com/api-reference/components/get-component-anchors-by-version.md): Returns the anchor details for the specified component.
- [Duplicate a component](https://docs.extole.com/api-reference/components/duplicate-a-component.md): Creates a deep copy of the specified component and all its child settings and assets.
- [Upgrade a component](https://docs.extole.com/api-reference/components/upgrade-a-component.md): Upgrades the component to the latest version of its component type definition.
- [Upload translatable component variables](https://docs.extole.com/api-reference/components/upload-translatable-component-variables.md): Uploads translated variable values from a CSV or Excel file.

### Components Operations

- [List component operations](https://docs.extole.com/api-reference/components-operations/list-component-operations.md): Returns all operations declared by the specified component.
- [Create a component operation](https://docs.extole.com/api-reference/components-operations/create-a-component-operation.md): Declares a new operation on the component identified by `component_id`.
- [List built component operations](https://docs.extole.com/api-reference/components-operations/list-built-component-operations.md): Returns all component operations as they appear on the built component.
- [Get a component operation](https://docs.extole.com/api-reference/components-operations/get-a-component-operation.md): Returns the component operation for the specified name.
- [Update a component operation](https://docs.extole.com/api-reference/components-operations/update-a-component-operation.md): Updates the operation identified by `operation_name`. Omitted fields keep their current value.
- [Delete a component operation](https://docs.extole.com/api-reference/components-operations/delete-a-component-operation.md): Removes the operation identified by `operation_name` and returns the deleted operation.
- [Get a built component operation](https://docs.extole.com/api-reference/components-operations/get-a-built-component-operation.md): Returns the specified component operation as it appears on the built component.

### Components Settings

- [List component settings](https://docs.extole.com/api-reference/components/list-component-settings.md): Returns all settings for the specified component.
- [Create a component setting](https://docs.extole.com/api-reference/components/create-a-component-setting.md): Adds a new named configuration setting to the specified component. Returns the created setting.
- [Batch update component settings](https://docs.extole.com/api-reference/components/batch-update-component-settings.md): Applies a batch of setting value updates across the component in one request.
- [List built component settings](https://docs.extole.com/api-reference/components/list-built-component-settings.md): Returns all component settings in their fully evaluated runtime form.
- [Get a component setting](https://docs.extole.com/api-reference/components/get-a-component-setting.md): Returns the component setting for the specified name.
- [Update a component setting](https://docs.extole.com/api-reference/components/update-a-component-setting.md): Updates the specified component setting. Only fields present in the request body are changed. Returns the updated setting.
- [Delete a component setting](https://docs.extole.com/api-reference/components/delete-a-component-setting.md): Removes the specified component setting and returns the deleted record.
- [Get a built component setting](https://docs.extole.com/api-reference/components/get-a-built-component-setting.md): Returns the fully evaluated (built) runtime form of the component setting, with expression fields resolved.
- [List installed components in setting](https://docs.extole.com/api-reference/components/list-installed-components-in-setting.md): Returns all component references currently installed in the specified socket-type setting.
- [Add component to setting](https://docs.extole.com/api-reference/components/add-component-to-setting.md): Creates a distinct duplicate of the component identified by `source_component_id` and installs it into the specified `SOCKET` or `MULTI_SOCKET` setting. The source component is not referenced or modified. Optional `settings` entries override settings on the duplicate.
- [Remove component from setting](https://docs.extole.com/api-reference/components/remove-component-from-setting.md): Removes a component reference from the specified socket-type setting.

### Domains

- [List client domains](https://docs.extole.com/api-reference/domains/list-client-domains.md)
- [Create client domain](https://docs.extole.com/api-reference/domains/create-client-domain.md)
- [Get client domain](https://docs.extole.com/api-reference/domains/get-client-domain.md)
- [Update client domain](https://docs.extole.com/api-reference/domains/update-client-domain.md): Fields omitted from the body are left unchanged — you do not need to send the whole resource.
- [Archive client domain](https://docs.extole.com/api-reference/domains/archive-client-domain.md)
- [Get client domain with decrypted SSL private key](https://docs.extole.com/api-reference/domains/get-client-domain-with-decrypted-ssl-private-key.md)
- [Validate client domain](https://docs.extole.com/api-reference/domains/validate-client-domain.md)

### Email

- [List email domains](https://docs.extole.com/api-reference/email/list-email-domains.md): Returns all custom sending domains configured for the client.
- [Create an email domain](https://docs.extole.com/api-reference/email/create-an-email-domain.md): Creates a new custom sending domain for campaign emails. DNS verification records are generated for the domain. Returns the created domain with its server-assigned id.
- [Get an email domain](https://docs.extole.com/api-reference/email/get-an-email-domain.md): Returns the custom sending domain for the specified id.
- [Update an email domain](https://docs.extole.com/api-reference/email/update-an-email-domain.md): Updates the custom sending domain. Only fields present in the request body are changed. Returns the updated domain.
- [Delete an email domain](https://docs.extole.com/api-reference/email/delete-an-email-domain.md): Removes the custom sending domain. Returns the deleted domain.
- [Validate an email domain](https://docs.extole.com/api-reference/email/validate-an-email-domain.md): Checks DNS records for the custom sending domain to confirm verification status. Returns the current validation result without making changes.

### Erasure

- [Create an erasure request](https://docs.extole.com/api-reference/erasure/create-an-erasure-request.md): Submits an irreversible GDPR/privacy erasure request for a person's data. All personal data associated with the specified person is permanently deleted. Returns the erasure record.

### Event Streams

- [List event streams](https://docs.extole.com/api-reference/event-streams/list-event-streams.md): Returns all event-stream subscriptions configured for the client. Event streams push a filtered view of client-event activity to a downstream consumer such as a webhook or Kafka topic. Use `GET /v6/event-streams/built` to retrieve evaluated runtime configs.
- [Create an event stream](https://docs.extole.com/api-reference/event-streams/create-an-event-stream.md): Creates a new event-stream subscription for the client. Event streams push a filtered view of client-event activity to a downstream consumer such as a webhook or Kafka topic. Returns the created event stream with its server-assigned id.
- [List built event streams](https://docs.extole.com/api-reference/event-streams/list-built-event-streams.md): Returns the evaluated runtime configuration for all event-stream subscriptions of the client. Built representations reflect component inheritance and dynamic overrides applied at runtime.
- [Get an event stream](https://docs.extole.com/api-reference/event-streams/get-an-event-stream.md): Returns the event-stream subscription for the specified id.
- [Update an event stream](https://docs.extole.com/api-reference/event-streams/update-an-event-stream.md): Updates the event-stream subscription. Only fields present in the request body are changed. Returns the updated event stream.
- [Archive an event stream](https://docs.extole.com/api-reference/event-streams/archive-an-event-stream.md): Archives the event-stream subscription, stopping event delivery without permanently removing the configuration. Returns the archived event stream.
- [Get a built event stream](https://docs.extole.com/api-reference/event-streams/get-a-built-event-stream.md): Returns the evaluated runtime configuration for the specified event-stream subscription. The built representation reflects component inheritance and dynamic overrides applied at runtime.
- [List events from an event stream](https://docs.extole.com/api-reference/event-streams/list-events-from-an-event-stream.md): Returns events captured by the event stream identified by `eventStreamId`, sorted newest first. Use `limit`, `offset`, and date-range filter parameters to page and narrow the result set. Each entry includes the event type, timestamp, and the full event payload as recorded by the stream.
- [List event stream filters](https://docs.extole.com/api-reference/event-streams/list-event-stream-filters.md): Returns all filter rules configured on the specified event stream.
- [Create an event stream filter](https://docs.extole.com/api-reference/event-streams/create-an-event-stream-filter.md): Creates a new filter rule on the specified event stream. Filters restrict which events are delivered to the downstream consumer. Returns the created filter with its server-assigned id.
- [Get an event stream filter](https://docs.extole.com/api-reference/event-streams/get-an-event-stream-filter.md): Returns the filter rule for the specified id on the given event stream.
- [Update an event stream filter](https://docs.extole.com/api-reference/event-streams/update-an-event-stream-filter.md): Updates the filter rule on the specified event stream. Only fields present in the request body are changed. Returns the updated filter.
- [Archive an event stream filter](https://docs.extole.com/api-reference/event-streams/archive-an-event-stream-filter.md): Archives the filter rule on the specified event stream. Returns the archived filter.
- [Delete an event stream](https://docs.extole.com/api-reference/event-streams/delete-an-event-stream.md): Permanently deletes the event-stream subscription. Returns the deleted event stream.
- [Unarchive an event stream](https://docs.extole.com/api-reference/event-streams/unarchive-an-event-stream.md): Restores a previously archived event-stream subscription, resuming event delivery. Returns the restored event stream.

### Optout

- [Get opt-out status](https://docs.extole.com/api-reference/optout/get-opt-out-status.md): Returns the opt-out suppression state for a person identified by email address. A person who is opted out will not receive campaign sends or reward awards.

### Profiles

- [Get a shareable link](https://docs.extole.com/api-reference/profiles/get-a-shareable-link.md): Returns the v3 shareable link for the specified code, including the participant and campaign context resolved at runtime.

### Promotion Links

- [List promotion links](https://docs.extole.com/api-reference/promotion-links/list-promotion-links.md): Returns all promotion links for the client. Promotion links are the short URLs that participants share to drive referrals.
- [Create a promotion link](https://docs.extole.com/api-reference/promotion-links/create-a-promotion-link.md): Creates a new promotion link for a participant. Returns the created link with its server-assigned id.
- [Get a promotion link](https://docs.extole.com/api-reference/promotion-links/get-a-promotion-link.md): Returns the promotion link for the specified code.

### Report Schedules

- [List report runners](https://docs.extole.com/api-reference/report-schedules/list-report-runners.md): Returns report runners for the calling client, filtered and ordered by the supplied query parameters. Report runners are scheduled report execution definitions that run a report type on a recurring schedule and deliver output to a configured destination (e.g. SFTP). Use `GET /v7/report-runners/templ…
- [Create a report runner](https://docs.extole.com/api-reference/report-schedules/create-a-report-runner.md): Creates a new report runner definition and schedules it for execution. Returns the persisted report runner with its server-assigned id. The runner begins executing on its first scheduled interval after creation.
- [List report runner templates](https://docs.extole.com/api-reference/report-schedules/list-report-runner-templates.md): Returns the available report runner templates for the calling client. Templates are pre-configured runner definitions that can be duplicated via `POST /v7/report-runners/{id}/duplicate` to create new runners with minimal configuration.
- [Get a report runner](https://docs.extole.com/api-reference/report-schedules/get-a-report-runner.md): Returns the full report runner definition for the supplied id, including its schedule, report type, parameters, formats, and delivery configuration. Returns `404 report_runner_not_found` if the id does not exist.
- [Update a report runner](https://docs.extole.com/api-reference/report-schedules/update-a-report-runner.md): Applies a partial update to the supplied report runner. Only the fields present in the body are changed; omitted fields are left intact. Returns the persisted report runner after the update. Returns `404 report_runner_not_found` if the id does not exist. Locked runners (`report_runner_locked`) must…
- [Delete a report runner](https://docs.extole.com/api-reference/report-schedules/delete-a-report-runner.md): Permanently deletes the supplied report runner and cancels all pending executions. Returns the deleted record on success. Returns `404 report_runner_not_found` if the id does not exist. Locked runners cannot be deleted via the REST API.
- [Duplicate a report runner](https://docs.extole.com/api-reference/report-schedules/duplicate-a-report-runner.md): Creates a new report runner by duplicating the supplied one. The body provides the overrides to apply to the copy; fields absent from the body are copied from the source. Set `allow_duplicate=true` to allow creating a runner with the same name as an existing one. Returns the new report runner.
- [Generate missing reports for a schedule](https://docs.extole.com/api-reference/report-schedules/generate-missing-reports-for-a-schedule.md): Runs a scheduled report runner for past periods that have no report yet, and returns the reports it started. A period that already has a report is left alone, so this is safe to repeat.

### Report Types

- [List report types](https://docs.extole.com/api-reference/report-types/list-report-types.md): Returns the report types visible to the calling client, filtered and ordered by the supplied query parameters. Supports paging via `limit` / `offset` and ordering via `order_by` / `order`. Use this to populate report-builder pickers and to discover the available `parameters`, `formats`, and `scopes`…
- [List report types with their associated clients](https://docs.extole.com/api-reference/report-types/list-report-types-with-their-associated-clients.md): Returns every report type alongside the ids of clients that have access to it. Equivalent to running `listReportTypes` and `listReportTypeClients` for every result, but in a single call. Requires the `client_superuser` scope - use this only when auditing cross-client access at the platform level.
- [List recommended report types](https://docs.extole.com/api-reference/report-types/list-recommended-report-types.md): Returns report types that are recommended for immediate execution, ranked by relevance for the calling client. Use the `limit` parameter to control the maximum number of results (default: 5).
- [List report type schemas](https://docs.extole.com/api-reference/report-types/list-report-type-schemas.md): Returns the schema for every report type visible to the calling client whose output shape is known ahead of a run. Each entry pairs a `report_type_id` with ordered `columns` or representative nested `sample_rows`. Report types that do not support a schema are omitted from the list, and so is a schem…
- [Get report type](https://docs.extole.com/api-reference/report-types/get-report-type.md): Returns the full report-type record for the supplied id, including its display name, description, declared `parameters`, supported `formats`, allowed `scopes`, visibility, and associated `tags`.
- [Update a report type](https://docs.extole.com/api-reference/report-types/update-a-report-type.md): Applies a partial update to the supplied report type. Only the fields present in the body are changed; omitted fields are left intact. Returns the persisted report type after update.
- [Delete a report type](https://docs.extole.com/api-reference/report-types/delete-a-report-type.md): Deletes the supplied report type. Returns the deleted record on success. Fails with `400 report_type_has_dependent_types` if other report types depend on it; delete or detach the dependents first.
- [Get report type mapping suggestions](https://docs.extole.com/api-reference/report-types/get-report-type-mapping-suggestions.md): Returns the column expressions this report type's mapping parameters accept, as ordered suggestion groups of `column_name` / `expression` pairs. Where the schema endpoints describe the columns a report produces, this endpoint describes the expressions that can go into its column mapping parameters.…
- [Get report type schema](https://docs.extole.com/api-reference/report-types/get-report-type-schema.md): Returns the schema a report type produces - ordered `columns` for flat output, or representative `sample_rows` for nested JSON output. For report types with fixed columns, these are the report type's preview columns. For configurable report types, they are the client-named columns defined by the rep…
- [Get report type schema for a context](https://docs.extole.com/api-reference/report-types/get-report-type-schema-for-a-context.md): Returns the schema a report type produces for the supplied report parameter values - the ordered `columns` or representative `sample_rows` in its output. Persists nothing. The response describes the output the report emits when run with those same values, so a client can learn its output shape befor…

### Reports

- [List reports](https://docs.extole.com/api-reference/reports/list-reports.md): Returns all report runs visible to the authenticated client, optionally filtered by the provided query parameters.
- [Create a report](https://docs.extole.com/api-reference/reports/create-a-report.md): Submits a new report run for the specified report type and parameters. The report executes asynchronously; poll the returned report ID to check status.
- [List report tags](https://docs.extole.com/api-reference/reports/list-report-tags.md): Returns the list of tags available for filtering reports.
- [Get the latest report](https://docs.extole.com/api-reference/reports/get-the-latest-report.md): Returns the most recent completed report run matching the specified report name and optional parameter filters.
- [Download the latest report](https://docs.extole.com/api-reference/reports/download-the-latest-report.md): Downloads the output of the most recent completed report run matching the specified report name and optional filters. Append a format extension to select the download format.
- [List report recommendations](https://docs.extole.com/api-reference/reports/list-report-recommendations.md): Returns reports recommended for scheduling according to the selected recommendation type.
- [Get a report](https://docs.extole.com/api-reference/reports/get-a-report.md): Returns the status and metadata for the report run identified by its report ID.
- [Update a report](https://docs.extole.com/api-reference/reports/update-a-report.md): Updates the parameters of a pending report run identified by its report ID.
- [Delete a report](https://docs.extole.com/api-reference/reports/delete-a-report.md): Deletes the report run identified by its report ID, including its output data.
- [Get report debug info](https://docs.extole.com/api-reference/reports/get-report-debug-info.md): Returns internal debug information for the report run identified by its report ID. Restricted to client superusers.
- [Download a report](https://docs.extole.com/api-reference/reports/download-a-report.md): Downloads the output of a completed report run. Append a format extension (`.csv`, `.json`, `.jsonl`, `.xlsx`, `.psv`) to select the download format, or omit it to use the report's default format.
- [Get report info](https://docs.extole.com/api-reference/reports/get-report-info.md): Returns metadata about a completed report across all available formats, including row count and available column sets.
- [Get report format info](https://docs.extole.com/api-reference/reports/get-report-format-info.md): Returns metadata about a completed report in the specified format, such as row count and column names.
- [Get public view of a report](https://docs.extole.com/api-reference/reports/get-public-view-of-a-report.md): Returns the publicly accessible view of the specified report.
- [Cancel a report](https://docs.extole.com/api-reference/reports/cancel-a-report.md): Cancels a pending or in-progress report run identified by its report ID.
- [Retry a report](https://docs.extole.com/api-reference/reports/retry-a-report.md): Retries a previously submitted report run identified by its report ID. Use this to re-run a failed or cancelled report with the same parameters.
- [Create a shared token for a report](https://docs.extole.com/api-reference/reports/create-a-shared-token-for-a-report.md): Creates a shareable access token for the specified report, allowing the report to be accessed without full authentication.

### Reward Suppliers

- [Download manual coupons](https://docs.extole.com/api-reference/reward-suppliers/download-manual-coupons.md): Downloads the current coupon pool for the manual coupon supplier as a JSON response.
- [Upload manual coupons file](https://docs.extole.com/api-reference/reward-suppliers/upload-manual-coupons-file.md): Uploads a coupon code file (CSV or text) to the manual coupon supplier's pool.
- [Delete manual coupons](https://docs.extole.com/api-reference/reward-suppliers/delete-manual-coupons.md): Removes coupons from the manual coupon supplier's pool.
- [Download manual coupons file](https://docs.extole.com/api-reference/reward-suppliers/download-manual-coupons-file.md): Downloads the current coupon pool for the manual coupon supplier as a file.
- [Get manual coupon operations](https://docs.extole.com/api-reference/reward-suppliers/get-manual-coupon-operations.md): Returns a log of recent upload and delete operations for this manual coupon supplier.
- [Get manual coupon stats](https://docs.extole.com/api-reference/reward-suppliers/get-manual-coupon-stats.md): Returns usage statistics for the coupon pool on this manual coupon supplier.
- [List Salesforce coupon pools](https://docs.extole.com/api-reference/reward-suppliers/list-salesforce-coupon-pools.md): Returns the available Salesforce coupon pools that can be linked to a reward supplier.
- [Get Salesforce coupon operations](https://docs.extole.com/api-reference/reward-suppliers/get-salesforce-coupon-operations.md): Returns a log of recent Salesforce sync operations for this coupon supplier.
- [Get Salesforce coupon stats](https://docs.extole.com/api-reference/reward-suppliers/get-salesforce-coupon-stats.md): Returns usage statistics for the coupon pool on this Salesforce coupon supplier.
- [Get Tango catalog](https://docs.extole.com/api-reference/reward-suppliers/get-tango-catalog.md): Returns the available Tango gift card brands and denominations from the Tango Card API.
- [List reward suppliers](https://docs.extole.com/api-reference/reward-suppliers/list-reward-suppliers.md): Returns all reward supplier configurations for the client, across all supplier types. Reward suppliers are integrations with upstream providers that fulfil reward issuance (gift cards, coupons, payouts, etc.). Use the `types` query parameter to filter by supplier type.
- [Create a reward supplier](https://docs.extole.com/api-reference/reward-suppliers/create-a-reward-supplier.md): Creates a new reward supplier configuration. Returns the persisted supplier with its server-assigned id.
- [List built reward suppliers](https://docs.extole.com/api-reference/reward-suppliers/list-built-reward-suppliers.md): Returns all reward suppliers in their fully evaluated (built) runtime form.
- [Get reward supplier display types](https://docs.extole.com/api-reference/reward-suppliers/get-reward-supplier-display-types.md): Returns the available display type labels for reward suppliers on this client.
- [Get a reward supplier](https://docs.extole.com/api-reference/reward-suppliers/get-a-reward-supplier.md): Returns the reward supplier configuration for the specified supplier id.
- [Update a reward supplier](https://docs.extole.com/api-reference/reward-suppliers/update-a-reward-supplier.md): Updates the reward supplier on the client. Only fields present in the request body are changed. Returns the updated supplier.
- [Archive a reward supplier](https://docs.extole.com/api-reference/reward-suppliers/archive-a-reward-supplier.md): Archives the reward supplier, removing it from active use. Returns the archived supplier.
- [Get a built reward supplier](https://docs.extole.com/api-reference/reward-suppliers/get-a-built-reward-supplier.md): Returns the fully evaluated (built) runtime form of the specified reward supplier.
- [Refill Salesforce coupons](https://docs.extole.com/api-reference/reward-suppliers/refill-salesforce-coupons.md): Triggers a sync to pull new coupon codes from the Salesforce coupon pool into the supplier.
- [Delete Salesforce coupons](https://docs.extole.com/api-reference/reward-suppliers/delete-salesforce-coupons.md): Removes all unused coupons from the Salesforce coupon pool.
- [Unarchive a reward supplier](https://docs.extole.com/api-reference/reward-suppliers/unarchive-a-reward-supplier.md): Restores a previously archived reward supplier to active use. Returns the restored supplier.
- [Delete a reward supplier](https://docs.extole.com/api-reference/reward-suppliers/delete-a-reward-supplier.md): Permanently deletes the reward supplier. Returns the deleted supplier record.

### Security Keys

- [List client keys](https://docs.extole.com/api-reference/security-keys/list-client-keys.md): Returns active (non-archived) security keys for the client. Keys store credentials and cryptographic material used by integrations, campaign components, SFTP file transfer, and outbound webhooks. Pass one or more `tags` query values; a key is returned only when it includes every supplied tag. Use `G…
- [Create client key](https://docs.extole.com/api-reference/security-keys/create-client-key.md): Creates a client key from a JSON request body. Supported variants include OAuth integrations, inline PGP or SSH key material, JWT signing keys, webhook secrets, and generic password or HTTP basic credentials. Set `algorithm` to select the polymorphic request and response schema. Set `type` to classi…
- [List built client keys](https://docs.extole.com/api-reference/security-keys/list-built-client-keys.md): Returns the built form of each matching active client key with evaluatable fields resolved for the current client context. Supports the same `tags` filter as `GET /v2/settings/security/keys`.
- [Create client key from file](https://docs.extole.com/api-reference/security-keys/create-client-key-from-file.md): Creates a client key by uploading key material as `multipart/form-data`. Currently supports PKCS#12 (`.p12`/`.pfx`) bundles with `algorithm` `SSL_PKCS_12`. For JSON create use `POST /v2/settings/security/keys`.
- [Delete client key](https://docs.extole.com/api-reference/security-keys/delete-client-key.md): Permanently deletes an archived client key. The key must not be referenced by campaign components or other platform resources.
- [Unarchive client key](https://docs.extole.com/api-reference/security-keys/unarchive-client-key.md): Restores a previously archived client key so it can be used again. Fails when another active key already uses the same name.
- [Update client key](https://docs.extole.com/api-reference/security-keys/update-client-key.md): Updates an existing client key identified by `key_id`. Only fields present in the request body are changed.
- [Archive client key](https://docs.extole.com/api-reference/security-keys/archive-client-key.md): Archives a client key so it no longer appears in list results or can be selected for new use. The key record is retained and can be restored with `POST /v2/settings/security/keys/{key_id}/unarchive`. Fails when the key is still referenced by campaign components or other platform resources.

### Settings

- [Get the client logo](https://docs.extole.com/api-reference/settings/get-the-client-logo.md): Returns the current logo image metadata for the client.
- [Upload a client logo](https://docs.extole.com/api-reference/settings/upload-a-client-logo.md): Uploads a new logo image for the client via multipart form upload. Returns the created logo metadata.
- [Archive the client logo](https://docs.extole.com/api-reference/settings/archive-the-client-logo.md): Archives the current client logo, removing it from active use. Returns the archived logo metadata.
- [Download logo image](https://docs.extole.com/api-reference/settings/download-logo-image.md): Downloads the client logo as a PNG image binary.
- [List timeline entries](https://docs.extole.com/api-reference/settings/list-timeline-entries.md): Returns all campaign timeline entries for the client, optionally filtered by tags.
- [Create a timeline entry](https://docs.extole.com/api-reference/settings/create-a-timeline-entry.md): Creates a new named milestone in the campaign timeline visible in the console. Returns the created entry with its server-assigned name.
- [Get a timeline entry](https://docs.extole.com/api-reference/settings/get-a-timeline-entry.md): Returns the campaign timeline entry for the specified name.
- [Update a timeline entry](https://docs.extole.com/api-reference/settings/update-a-timeline-entry.md): Updates the campaign timeline entry for the specified name. Only fields present in the request body are changed. Returns the updated entry.
- [Delete a timeline entry](https://docs.extole.com/api-reference/settings/delete-a-timeline-entry.md): Removes the campaign timeline entry for the specified name. Returns the deleted entry.

### User Notifications

- [List recent notifications](https://docs.extole.com/api-reference/user-notifications/list-recent-notifications.md): Returns the calling user's in-portal notifications sorted newest first. Use the `limit` and `offset` parameters to page through results. Notifications include report completion alerts, campaign status changes, and custom client events fired via `createClientEvent`.
- [Get notification read cursor](https://docs.extole.com/api-reference/user-notifications/get-notification-read-cursor.md): Returns the timestamp up to which the calling user has read their notifications. Use this cursor to determine which notifications are unread (those created after the returned timestamp). Advance the cursor with `updateNotificationCursor`.
- [Mark notifications as read](https://docs.extole.com/api-reference/user-notifications/mark-notifications-as-read.md): Advances the read cursor to the supplied timestamp, marking all notifications created at or before that time as read for the calling user. Returns the updated cursor state. Use `getNotificationCursor` to retrieve the current cursor position.
- [List notification snoozes for the caller](https://docs.extole.com/api-reference/user-notifications/list-notification-snoozes-for-the-caller.md): Returns all active notification snooze rules for the calling portal user, sorted newest first. A snooze rule suppresses notifications matching specified tags until its expiry time. To list snoozes for a different user, use `listSnoozesByUser`.
- [Create a notification snooze for the caller](https://docs.extole.com/api-reference/user-notifications/create-a-notification-snooze-for-the-caller.md): Creates a snooze rule that suppresses portal notifications matching the supplied tags for the calling portal user until the `expires_at` timestamp. Returns the newly created snooze with its assigned id. To create a snooze for a different user, use `createSnoozeByUser`.
- [Get a notification snooze for the caller](https://docs.extole.com/api-reference/user-notifications/get-a-notification-snooze-for-the-caller.md): Returns the snooze rule identified by `snoozeId` belonging to the calling portal user. Returns the tags being snoozed and the expiry timestamp. To retrieve a snooze for a different user, use `getSnoozeByUser`.
- [Delete a notification snooze for the caller](https://docs.extole.com/api-reference/user-notifications/delete-a-notification-snooze-for-the-caller.md): Removes the snooze rule identified by `snoozeId` belonging to the calling portal user. Returns the deleted snooze. Notifications previously suppressed by this rule will resume immediately. To delete a snooze for a different user, use `deleteSnoozeByUser`.
- [List notifications for a user](https://docs.extole.com/api-reference/user-notifications/list-notifications-for-a-user.md): Returns the in-portal notifications for the Extole portal user identified by `userId`, sorted newest first. Requires the `USER_SUPPORT` scope. Use the `limit` and `offset` parameters to page through results.
- [Get notification read cursor for a user](https://docs.extole.com/api-reference/user-notifications/get-notification-read-cursor-for-a-user.md): Returns the timestamp up to which the Extole portal user identified by `userId` has read their notifications. Requires the `USER_SUPPORT` scope. Use `updateNotificationCursorByUser` to advance the cursor.
- [Mark notifications as read for a user](https://docs.extole.com/api-reference/user-notifications/mark-notifications-as-read-for-a-user.md): Advances the read cursor to the supplied timestamp for the Extole portal user identified by `userId`, marking all notifications created at or before that time as read. Returns the updated cursor state.
- [List notification snoozes for a user](https://docs.extole.com/api-reference/user-notifications/list-notification-snoozes-for-a-user.md): Returns all active notification snooze rules for the Extole portal user identified by `userId`, sorted newest first. A snooze rule suppresses notifications matching specified tags until its expiry time.
- [Create a notification snooze for a user](https://docs.extole.com/api-reference/user-notifications/create-a-notification-snooze-for-a-user.md): Creates a snooze rule that suppresses portal notifications matching the supplied tags for the Extole portal user identified by `userId` until the `expires_at` timestamp. Returns the newly created snooze with its assigned id.
- [Get a notification snooze for a user](https://docs.extole.com/api-reference/user-notifications/get-a-notification-snooze-for-a-user.md): Returns the snooze rule identified by `snoozeId` belonging to the Extole portal user identified by `userId`. Returns the tags being snoozed and the expiry timestamp.
- [Delete a notification snooze for a user](https://docs.extole.com/api-reference/user-notifications/delete-a-notification-snooze-for-a-user.md): Removes the snooze rule identified by `snoozeId` belonging to the Extole portal user identified by `userId`. Returns the deleted snooze. Notifications previously suppressed by this rule will resume immediately.

### User Subscriptions

- [List subscriptions](https://docs.extole.com/api-reference/user-subscriptions/list-subscriptions.md): Returns all notification subscriptions for the calling client, optionally filtered by tags. Use `having_any_tags` to match subscriptions that have at least one of the specified tags, or `having_all_tags` to match subscriptions that have all specified tags.
- [List user subscriptions](https://docs.extole.com/api-reference/user-subscriptions/list-user-subscriptions.md): Returns all notification subscriptions for the specified Extole user. Subscriptions define which report or alert events the user wants to be notified about and through which channel (email, Slack, webhook).
- [Create a user subscription](https://docs.extole.com/api-reference/user-subscriptions/create-a-user-subscription.md): Creates a new notification subscription for the specified user. The request body specifies the event type to subscribe to and the delivery channel (email, Slack, or webhook). Returns the created subscription.
- [Get a user subscription](https://docs.extole.com/api-reference/user-subscriptions/get-a-user-subscription.md): Returns the specified notification subscription for the given user. Returns `400 invalid_subscription_id` if the subscription does not exist.
- [Update a user subscription](https://docs.extole.com/api-reference/user-subscriptions/update-a-user-subscription.md): Updates the specified notification subscription for the given user. Returns `400 invalid_subscription_id` if the subscription does not exist.
- [Delete a user subscription](https://docs.extole.com/api-reference/user-subscriptions/delete-a-user-subscription.md): Permanently deletes the specified notification subscription. The user will no longer receive notifications for the subscribed event type via that channel. Returns `400 invalid_subscription_id` if the subscription does not exist.

### Users

- [List users](https://docs.extole.com/api-reference/users/list-users.md): Returns all staff user accounts with access to the Extole console. Use the `scope` query parameter to restrict results to the current account or retrieve all accessible users.
- [Create a user](https://docs.extole.com/api-reference/users/create-a-user.md): Creates a new staff user account with access to the Extole console. Returns the created user with its server-assigned id. An invitation email is sent to the new user.
- [Get a user](https://docs.extole.com/api-reference/users/get-a-user.md): Returns the staff user account for the specified id.
- [Update a user](https://docs.extole.com/api-reference/users/update-a-user.md): Updates the staff user account. Only fields present in the request body are changed. Returns the updated user.
- [Delete a user](https://docs.extole.com/api-reference/users/delete-a-user.md): Deactivates and removes the staff user account, revoking all console access.
- [List user properties](https://docs.extole.com/api-reference/users/list-user-properties.md): Returns all per-user property overrides for the specified staff user.
- [Create a user property](https://docs.extole.com/api-reference/users/create-a-user-property.md): Creates a new per-user property override for the specified staff user. Returns the created property.
- [Get a user property](https://docs.extole.com/api-reference/users/get-a-user-property.md): Returns the per-user property override for the specified user and property name.
- [Update a user property](https://docs.extole.com/api-reference/users/update-a-user-property.md): Updates the per-user property override for the specified staff user and property name. Returns the updated property.
- [Delete a user property](https://docs.extole.com/api-reference/users/delete-a-user-property.md): Removes the per-user property override for the specified staff user and property name.
- [Reset user password](https://docs.extole.com/api-reference/users/reset-user-password.md): Initiates a password reset flow for the staff user identified by the request. A password-reset email is sent to the user's registered address.
- [Resend user invite email](https://docs.extole.com/api-reference/users/resend-user-invite-email.md): Resends the invitation email to a staff user who has not yet accepted their invitation.
- [Unlock a user](https://docs.extole.com/api-reference/users/unlock-a-user.md): Unlocks a staff user account that has been locked due to failed login attempts, restoring console access.
- [Update user password](https://docs.extole.com/api-reference/users/update-user-password.md): Updates the password for the authenticated staff user account.

### Webhooks

- [List webhooks](https://docs.extole.com/api-reference/webhooks/list-webhooks.md): Returns all webhooks for the client. Filter by `enabled` or `type` to narrow the result set. Use `GET /v6/webhooks/built` for the fully evaluated runtime form. Webhooks are outbound HTTP callbacks Extole fires when specific platform events occur.
- [Create a webhook](https://docs.extole.com/api-reference/webhooks/create-a-webhook.md): Creates a new webhook definition and returns the persisted record with its server-assigned id. The webhook fires immediately for matching events once created; set `enabled=false` in the request body to create it in a disabled state.
- [List built webhooks](https://docs.extole.com/api-reference/webhooks/list-built-webhooks.md): Returns all webhooks in their fully evaluated (built) runtime form, with all evaluatable fields resolved. Supports finer filtering than the source list: `name`, `include_archived`, `limit`, and `offset` are only available on this endpoint. Use this when you need effective endpoint URLs and headers.
- [Get a webhook](https://docs.extole.com/api-reference/webhooks/get-a-webhook.md): Returns the source definition of the supplied webhook, including its URL, headers, event filters, and state. Returns `400 webhook_not_found` if the id does not exist or is not accessible.
- [Update a webhook](https://docs.extole.com/api-reference/webhooks/update-a-webhook.md): Applies a partial update to the supplied webhook. Only the fields present in the body are changed; omitted fields are left intact. Returns the persisted webhook after the update. Returns `400 webhook_not_found` if the id does not exist.
- [Archive a webhook](https://docs.extole.com/api-reference/webhooks/archive-a-webhook.md): Archives (soft-deletes) the supplied webhook. The webhook stops firing immediately but its definition is retained. Fails with `400 webhook_associated_with_webhook_controller_action` if the webhook is referenced by a controller action, or `400 webhook_associated_with_webhook_user_subscription_channel…
- [Get a built webhook](https://docs.extole.com/api-reference/webhooks/get-a-built-webhook.md): Returns the fully evaluated (built) runtime form of the supplied webhook, with all evaluatable fields resolved. Returns `400 webhook_not_found` if the id does not exist or is not accessible.

## OpenAPI Specs

- [management](/api-reference/management.json)
