Programmatically query a dashboard’s metrics — the same information shown on the Summary screen. Authentication via API key (no expiring token). All monetary values are returned in cents, in the dashboard’s currency.
Before you start
With an API key generated inside your Utmify you can query a dashboard’s metrics. The key covers the dashboards you choose when creating it (a specific list or all of them).Prerequisites and access
- Eligible plan: Monster, Scale or Enterprise (includes Monster+ and Global/Latam variants).
- Access enabled in the closed beta (manual Utmify allowlist).
- Eligibility is revalidated on every request: if the plan drops to a non-eligible one, or the account is blocked/deactivated, the key stops working immediately.
Where to get your token
Inside Utmify, follow the path:Advanced → API Oficial card → New Token
- Give the token a name and choose the scope: “All dashboards” (including future ones) or select specific dashboards.
- The token is shown only once at creation. Copy it and store it securely — it’s a secret; do not expose it in front-end code or public repositories.
- You can have up to 3 tokens; you can enable/disable or revoke each one at any time from the same card.
1. Request Format
1.1 Base URL
1.2 Endpoint
{dashboardId} must be within the key’s scope and belong to its owner.
1.3 Headers
Send the key in one of the headers below:1.4 Body
All fields are optional.2. Parameter Reference
2.1 Headers
2.2 Path
2.3 Body
3. Response
3.1 200 Response
Monetary values are in cents (e.g.:revenue.gross = 12345 = $123.45). Metrics that cannot be calculated come back as null (e.g.: ROAS with no spend).
3.2 Response fields
4. Limits and Cache (beta)
- When the limit is exceeded: HTTP 429 with a
Retry-Afterheader (in seconds) — apply backoff. - Real-time data (
to= now): the response may come from a short-lived cache (approximately 2 minutes). Periods already closed in the past are always exact. Since the maximum lag matches the cache window, querying at very short intervals won’t return more up-to-date data — we recommend waiting at least a few minutes between live requests.
5. Errors
Error response format:6. Practical Examples
6.1 Query with a product filter (cURL)
6.2 Node.js (fetch)
6.3 Python (requests)
7. Frequently Asked Questions
What's the difference between this API and the Sales Submission API?
What's the difference between this API and the Sales Submission API?
The Sales Submission API is used to send orders to Utmify. The Official Query API does the reverse: it lets you read a dashboard’s consolidated metrics programmatically — the same thing you see on the Summary screen.
How do I generate my API key?
How do I generate my API key?
On the Utmify site, go to Advanced, locate the API Oficial card and click New Token. Available only for eligible plans with closed-beta access. The token is shown only once — copy it and store it securely.
Why do the monetary values look 100x larger?
Why do the monetary values look 100x larger?
All monetary values are returned in cents, in the dashboard’s currency. For example,
revenue.gross = 12345 equals $123.45. Divide by 100 to get the value in the currency.I received a 403 OFFICIAL_API_REQUIRES_ELIGIBLE_PLAN error. What does it mean?
I received a 403 OFFICIAL_API_REQUIRES_ELIGIBLE_PLAN error. What does it mean?
Your account does not have an active eligible plan. Eligibility is revalidated on every request, so a downgrade, cancellation or block makes the key stop working immediately. Check that your plan is Monster, Scale or Enterprise (or variants).
I received a 429 error. What should I do?
I received a 429 error. What should I do?
You exceeded the request limit (10 per minute or 10,000 per day per key). The response includes a
Retry-After header indicating how many seconds to wait before the next attempt. Implement a backoff strategy, respecting that interval before resending the request.Is the data real-time?
Is the data real-time?
For periods closed in the past, the data is exact. For “live” queries (with
to = now), the response may come from a short-lived cache (~2 minutes), so that’s the maximum expected lag.