Audience demographics
Audience geography and technology: countries, regions, cities, city-location coverage, devices, browsers and operating systems. Uses the dashboard's dates, timezone and traffic filters. Locations are approximate; age and gender are not collected.
On this page
get_demographicsAccess & permissions
Use an authorized read credential. Current membership and any elevated role described above still apply.
API keys default to their bound site. For multi-site OAuth connections, call list_projects and pass the intended projectId. Only approved sites are accessible.
Arguments
projectIdOptionalstring · uuid
Weeveo project id. Defaults to the key's project.
Validation pattern: see complete JSON Schema
rangeOptional"today" | "yesterday" | "7d" | "30d" | "90d" | "12mo" | "custom"
Date range preset; custom requires from and to.
Default: "30d"
fromOptionalstring · date
First local date, YYYY-MM-DD, for a custom range.
Validation pattern: see complete JSON Schema
toOptionalstring · date
Last local date, inclusive, for a custom range.
Validation pattern: see complete JSON Schema
trafficOptional"human" | "known_bot" | "suspicious" | "unknown" | "all"
Default: "human"
filtersOptionalobject[]
max items 20
filters[].fieldRequired within object"source" | "medium" | "url_path" | "referrer_domain" | "utm_source" | "utm_medium" | "utm_campaign" | "utm_term" | "utm_content" | "country" | "region" | "city" | "device_type" | "browser" | "os" | "event_name"
filters[].opRequired within object"is" | "is_not" | "contains"
filters[].valueRequired within objectstring
min length 1; max length 500
compareOptionalboolean
Include the previous period for deltas.
Default: true
limitOptionalinteger
Maximum rows per geographic level. Totals and shares use the full selected segment.
Default: 100
min 1; max 1000
Nested fields are listed with dotted paths; array item fields use []. Defaults apply to omitted arguments. For unions and all validation details, use the complete schema below.
HTTP request
POST https://weeveo.com/api/v1/tools/get_demographics
Authorization: Bearer <YOUR_CREDENTIAL>
Content-Type: application/json
<JSON_ARGUMENT_OBJECT>Replace the placeholders with your server-side credential and a JSON object satisfying the schema. GET is also available for simple scalar arguments. Use POST for arrays and nested objects. These documentation pages never execute a request.
Complete input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"projectId": {
"description": "Weeveo project id. Defaults to the key's project.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"range": {
"default": "30d",
"description": "Date range preset; custom requires from and to.",
"type": "string",
"enum": [
"today",
"yesterday",
"7d",
"30d",
"90d",
"12mo",
"custom"
]
},
"from": {
"description": "First local date, YYYY-MM-DD, for a custom range.",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"to": {
"description": "Last local date, inclusive, for a custom range.",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"traffic": {
"default": "human",
"type": "string",
"enum": [
"human",
"known_bot",
"suspicious",
"unknown",
"all"
]
},
"filters": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"enum": [
"source",
"medium",
"url_path",
"referrer_domain",
"utm_source",
"utm_medium",
"utm_campaign",
"utm_term",
"utm_content",
"country",
"region",
"city",
"device_type",
"browser",
"os",
"event_name"
]
},
"op": {
"type": "string",
"enum": [
"is",
"is_not",
"contains"
]
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"field",
"op",
"value"
]
}
},
"compare": {
"default": true,
"description": "Include the previous period for deltas.",
"type": "boolean"
},
"limit": {
"default": 100,
"description": "Maximum rows per geographic level. Totals and shares use the full selected segment.",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
}
}Download all tool schemas or query authenticated GET /api/v1/tools for runtime discovery.
Response & errors
{
"tool": "get_demographics",
"result": "<tool-specific value>"
}The result placeholder above describes the response envelope, not a literal returned string or a universal result schema. Results vary by tool. Fields named Cents are minor currency units; use returned currency labels. Secrets from creation tools are one-time results and must be saved securely immediately.
Failures return an HTTP error status with an error message. See errors, limits and retries, common analytics arguments and permissions.
Still looking for an answer? Try troubleshooting or get in touch.