Skip to content

Profile Attributes

Read-only catalogs for the ProfileAttributes dataset on Create Audience: the attribute cascade plus the delivered window its date range is bounded to.

The attribute catalogs form a three-level cascade - pick a category, use it to read the keys available under it, and both to read that key’s selectable values:

categories -> keys (?category_ids[]) -> values (?category_ids[], ?key)

Each level returns { value, text } rows (plus the parent it cascades from) where value is what the matching field of a profile_attributes row accepts and text is the label to show a user. All three levels are paginated.

Every read here is authenticated and JSON-only (bearer token + Accept: application/json) and uses the read rate bucket (120 requests/min per caller).

Get Profile Attributes Categories

GET /api/v2/analyses/reference/profile-attributes/categories

The first cascade level. value is the category id a profile_attributes row’s category_id takes. Paginated.

Query parameters

FieldTypeRequiredDescription
pageintegerNoPage number (standard pagination).
per_pageintegerNoItems per page, capped at 500.
searchstringNoOptional free-text filter on the category name (case-insensitive contains).
curl "https://console.intuizi.com/api/v2/analyses/reference/profile-attributes/categories" \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -H "Accept: application/json"

Response

{
  "status": "success",
  "code": 200,
  "message": "Resources fetched successfully.",
  "data": {
    "items": [
      { "value": 1, "text": "Auto" },
      { "value": 2, "text": "Finance" }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 500,
      "total": 2,
      "last_page": 1
    }
  }
}

Get Profile Attributes Keys

GET /api/v2/analyses/reference/profile-attributes/keys

The second cascade level: the keys available under the chosen categories. value is the key string a profile_attributes row’s key takes and category_id the category it belongs to, so one read tells you both which keys exist and which category each is filed under. Paginated.

Pass category_ids[] to narrow the list to the category you picked - a key is only valid on a row whose category_id matches.

Query parameters

FieldTypeRequiredDescription
pageintegerNoPage number (standard pagination).
per_pageintegerNoItems per page, capped at 500.
searchstringNoOptional free-text filter on the key or its label (case-insensitive contains).
category_idsinteger[]NoCategory ids to cascade from. Omit to list every key.
curl "https://console.intuizi.com/api/v2/analyses/reference/profile-attributes/keys?category_ids[]=1" \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -H "Accept: application/json"

Response

{
  "status": "success",
  "code": 200,
  "message": "Resources fetched successfully.",
  "data": {
    "items": [
      { "value": "auto_body_style", "text": "auto_body_style", "category_id": 1 },
      { "value": "auto_intent", "text": "Auto Intent", "category_id": 1 }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 500,
      "total": 2,
      "last_page": 1
    }
  }
}

Get Profile Attributes Values

GET /api/v2/analyses/reference/profile-attributes/values

The third cascade level: the values selectable for one category and key. value is the id a profile_attributes row’s value_ids takes, raw_value is the value that is stored on the audience, and category_id / key echo the pair the row belongs to. Paginated.

Pass both category_ids[] and key - a value is only valid on a row whose category_id and key both match.

Query parameters

FieldTypeRequiredDescription
pageintegerNoPage number (standard pagination).
per_pageintegerNoItems per page, capped at 500.
searchstringNoOptional free-text filter on the value or its label (case-insensitive contains).
category_idsinteger[]NoCategory ids to cascade from.
keystringNoThe key to cascade from.
curl "https://console.intuizi.com/api/v2/analyses/reference/profile-attributes/values?category_ids[]=1&key=auto_intent" \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -H "Accept: application/json"

Response

{
  "status": "success",
  "code": 200,
  "message": "Resources fetched successfully.",
  "data": {
    "items": [
      { "value": 10, "text": "High", "raw_value": "high", "category_id": 1, "key": "auto_intent" },
      { "value": 11, "text": "Medium", "raw_value": "medium", "category_id": 1, "key": "auto_intent" },
      { "value": 12, "text": "Low", "raw_value": "low", "category_id": 1, "key": "auto_intent" }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 500,
      "total": 3,
      "last_page": 1
    }
  }
}

Get Profile Attributes Recency Limits

GET /api/v2/analyses/reference/profile-attributes/recency-limits

The delivered window a ProfileAttributes dataset’s start_date and end_date must fall inside. Profile attribute data is delivered quarterly, so the stored window is expanded out to whole quarters - start_date to the first day of its quarter and end_date to the last day of its quarter.

Read this before building the dataset and keep both dates between the two inclusive Y-m-d bounds it returns; a date outside them is rejected with 422.

Query parameters

This read takes no parameters.

curl "https://console.intuizi.com/api/v2/analyses/reference/profile-attributes/recency-limits" \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -H "Accept: application/json"

Response

{
  "status": "success",
  "code": 200,
  "message": "Resources fetched successfully.",
  "data": [
    { "start_limit": "2026-04-01", "end_limit": "2026-09-30" }
  ]
}