SegmentsCreate or update segment

Create or update segment

Create a new segment, or update an existing one when an id is included in the body. Requires an agency key (ak_) and ?location_id=. The definition is validated against the filter whitelist; unknown filters or bad types are rejected. Returns the saved row.

curl -X POST "https://mythic-analytics.gulp.workers.dev/builder/segments?location_id=acme-retail" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "Active organic (30d)",
  "description": "example_string",
  "definition": {
    "attribution": "first",
    "search": "acme",
    "has_email": true,
    "channel": "organic",
    "utm_source": "google",
    "utm_medium": "cpc",
    "utm_campaign": "example_string",
    "country": "US",
    "device_type": "mobile",
    "min_sessions": 3,
    "min_identities": 2,
    "active_within_days": 30,
    "inactive_days": 90,
    "first_seen_within_days": 7
  },
  "is_favorite": true
}'
{
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "Active organic (30d)",
    "description": "example_string",
    "definition": {
      "attribution": "first",
      "search": "acme",
      "has_email": true,
      "channel": "organic",
      "utm_source": "google",
      "utm_medium": "cpc",
      "utm_campaign": "example_string",
      "country": "US",
      "device_type": "mobile",
      "min_sessions": 3,
      "min_identities": 2,
      "active_within_days": 30,
      "inactive_days": 90,
      "first_seen_within_days": 7
    },
    "is_favorite": true,
    "created_at": "2024-12-25T10:00:00Z",
    "updated_at": "2024-12-25T10:00:00Z"
  }
}
POST
/segments
POST
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

Builder key as a bearer token. Use an agency key for full CRUD (Bearer ak_...) or a viewer key for read-only access (Bearer sk_...). Scoped keys (mcp_) are accepted too and need segments:read or segments:write. See Using an mcp_ key over HTTP.

Builder key as a bearer token. Use an agency key for full CRUD (Bearer ak_...) or a viewer key for read-only access (Bearer sk_...). Scoped keys (mcp_) are accepted too and need segments:read or segments:write. See Using an mcp_ key over HTTP.
query
location_idstring

Client location to scope the request to. Required when authenticating with an agency key (ak_). Ignored for viewer keys (sk_).

Content-Typestring
Required

The media type of the request body

Options: application/json
idstring

Include to update an existing segment; omit to create.

Format: uuid
definitionobject
Required

A flat object of person-attribute filters. All present filters combine with AND. Any subset may be used; at least one is required. Unknown keys are rejected. The attribution field picks which touch the attribution filters (channel, utm_source, utm_medium, utm_campaign, country, device_type) match against — last (default), first, or session. Example: { "utm_source": "fb", "attribution": "session" } = "everyone who ever had a session that arrived via fb".

Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. Builder key as a bearer token. Use an agency key for full CRUD (Bearer ak_...) or a viewer key for read-only access (Bearer sk_...). Scoped keys (mcp_) are accepted too and need segments:read or segments:write. See Using an mcp_ key over HTTP.

Query Parameters

location_idstring

Client location to scope the request to. Required when authenticating with an agency key (ak_). Ignored for viewer keys (sk_).

Example:
acme-retail

Body

application/json
idstring

Include to update an existing segment; omit to create.

namestring
Required
Example:
Active organic (30d)
definitionobject
Required

A flat object of person-attribute filters. All present filters combine with AND. Any subset may be used; at least one is required. Unknown keys are rejected.

The attribution field picks which touch the attribution filters (channel, utm_source, utm_medium, utm_campaign, country, device_type) match against — last (default), first, or session. Example: \\{ "utm_source": "fb", "attribution": "session" \\} = "everyone who ever had a session that arrived via fb".

Responses

dataobject