Skip to main content
Developer Marketing1.0.0-beta.1

Change saved Marketing UTM records

Creates, updates, duplicates or deletes campaigns, manages saved links and custom presets, or updates naming rules for the token’s Space. Campaign deletion removes its saved links and duplication copies them. Space audit and mutation commit together. Reuse the original key and action body when retrying. Receipts remain available for seven days, with up to 1000 active receipts per Space.

POST/api/v1/marketing/utm

Workspace automation for approved Dashio products. Each token is scoped to one Space and independently granted operations. Requests spend shared minute credits, and selected operation groups also share hourly quotas.

Required token scope is marketing:utm:write. Scopes are independent.

This operation uses 3 credits from a shared budget of 60 credits per token and 300 per Space each UTC minute.

Run these examples on a trusted server with DASHIO_API_TOKEN configured. Use a private terminal when inspecting response data. Examples send one request with a bounded timeout and do not retry automatically.

Set DASHIO_IDEMPOTENCY_KEY to the persisted key for this logical write. Reuse it only for an identical retry.

Authentication

Dashio developer token (HTTP Bearer) API authentication guide

Path parameters

None documented.

Query parameters

None documented.

Header parameters

Idempotency-KeystringRequired

Use 16 to 128 ASCII letters, digits, underscores or hyphens. Generate one key per intended change and reuse it for retries. Minimum length: 16. Maximum length: 128. Pattern: ^[A-Za-z0-9_-]+$.

Example"61d9263e-143b-4407-90fd-e3b54df67c96"

Request body

application/json · Required

One UTM action and its required inputs, up to 64 KiB of JSON.

Create campaign
Update campaign
Duplicate campaign
Delete campaign
Create saved link
Update saved link
Delete saved link
Create custom preset
Delete custom preset
Update naming rules

Responses

Headers on every response

X-Request-Idstring (uuid)Optional

Server-generated ID to include in a support request.

200

A confirmed mutation receipt. A replay returns the previously affected record without repeating the change.

Response headers

RateLimit-LimitintegerOptional

Per-token capacity in the reported gateway window, expressed in requests of this operation. A shared Space budget also applies. Present when the request reaches the authenticated gateway. Minimum: 1.

RateLimit-RemainingintegerOptional

Requests of this operation remaining under the current token, Space and applicable operation-group quotas. Present when the request reaches the authenticated gateway. Minimum: 0.

RateLimit-ResetintegerOptional

Unix timestamp in seconds when the reported gateway quota resets. Present when the request reaches the authenticated gateway. Minimum: 0.

Idempotency-ReplayedstringOptional

Present as true when returning a stored receipt. Required value: "true".

application/json

actionstringRequired

Allowed values: "campaign.create", "campaign.update", "campaign.duplicate", "campaign.delete", "link.create", "link.update", "link.delete", "preset.create", "preset.delete", "settings.update".

recordIdstring | null (uuid)Required

Affected record ID, or null for a naming policy change.

replayedbooleanRequired

No field description supplied.

400

Invalid action, URL, query, payload, or idempotency key.

application/json

statusCodeintegerRequired

Minimum: 400. Maximum: 599.

statusMessagestringOptional

A safe explanation suitable for display.

dataobjectRequired

No field description supplied.

401

Developer token is missing or invalid.

Response headers

WWW-AuthenticatestringOptional

Bearer authentication challenge. A rejected token can include the invalid_token error.

application/json

Uses the same response body schema as HTTP 400.

402

An active Marketing entitlement is required.

application/json

Uses the same response body schema as HTTP 400.

403

UTM write permission, current Space access, or a record allowance is missing.

application/json

Uses the same response body schema as HTTP 400.

404

Marketing or the selected record is unavailable.

application/json

Uses the same response body schema as HTTP 400.

408

The JSON body timed out.

application/json

Uses the same response body schema as HTTP 400.

409

A key was reused for a different request, or a related record or naming policy changed.

application/json

Uses the same response body schema as HTTP 400.

413

The JSON body exceeds 64 KiB.

application/json

Uses the same response body schema as HTTP 400.

415

Use an application/json request body.

application/json

Uses the same response body schema as HTTP 400.

429

The token or Space request budget, or the UTM receipt limit, is exhausted. Edge traffic limits can also return 429.

Response headers

RateLimit-LimitintegerOptional

Per-token capacity in the reported gateway window, expressed in requests of this operation. A shared Space budget also applies. Present when the request reaches the authenticated gateway. Minimum: 1.

RateLimit-RemainingintegerOptional

Requests of this operation remaining under the current token, Space and applicable operation-group quotas. Present when the request reaches the authenticated gateway. Minimum: 0.

RateLimit-ResetintegerOptional

Unix timestamp in seconds when the reported gateway quota resets. Present when the request reaches the authenticated gateway. Minimum: 0.

Retry-AfterintegerOptional

Seconds to wait before retrying, when the limiting policy supplies a retry time. Minimum: 1.

application/json

Uses the same response body schema as HTTP 400.

503

The UTM mutation could not be confirmed. Retry with the same key.

application/json

Uses the same response body schema as HTTP 400.

Was this helpful?