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": {
    "events": [
      {
        "event": "Purchase",
        "within_days": 30,
        "min_count": 10,
        "filters": [
          {
            "property": "$pathname",
            "op": "eq",
            "value": "example_string"
          }
        ]
      }
    ],
    "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": {
      "events": [
        {
          "event": "Purchase",
          "within_days": 30,
          "min_count": 10,
          "filters": [
            {
              "property": "$pathname",
              "op": "eq",
              "value": "example_string"
            }
          ]
        }
      ],
      "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
    },
    "membership": {
      "status": "pending",
      "computed_at": "2024-12-25T10:00:00Z",
      "rows": 42,
      "error": "example_string"
    },
    "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

Person-attribute filters plus an optional events list of event conditions. Everything present combines with AND. Any subset may be used; at least one filter or condition is required. Unknown keys are rejected. Examples: { "events": [{ "event": "Purchase" }] } = people who have ever done Purchase. { "events": [{ "event": "$pageview", "within_days": 30, "filters": [{ "property": "$pathname", "op": "eq", "value": "/xyz" }] }] } = people who visited /xyz in the last 30 days. 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

Person-attribute filters plus an optional events list of event conditions. Everything present combines with AND. Any subset may be used; at least one filter or condition is required. Unknown keys are rejected.

Examples: { "events": [{ "event": "Purchase" }] } = people who have ever done Purchase. { "events": [{ "event": "$pageview", "within_days": 30, "filters": [{ "property": "$pathname", "op": "eq", "value": "/xyz" }] }] } = people who visited /xyz in the last 30 days.

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