---
title: "Order counts and revenue for a venue"
method: GET
path: "/api/v1/venues/{id}/orders/analytics"
tags: ["Public API v1"]
---

# Order counts and revenue for a venue

`GET /api/v1/venues/{id}/orders/analytics`

## Request

- Base URL: `https://scanduro.com`
- URL: `https://scanduro.com/api/v1/venues/{id}/orders/analytics`
- Auth: HTTP bearer

The same figures the dashboard shows, over the range you ask for, and deliberately no more.

The dashboard's panel also draws a scan-to-order funnel, a per-day timeline, a per-hour heat
map and a top-items list. Those are read as a picture on one screen; as API fields they become
numbers somebody reconciles, and a per-dish breakdown in particular is a figure this product
has never defined — a modifier's money belongs to the line, not the dish. So this endpoint
returns counts and money only.

`revenueMinor` is what was ORDERED in the range, in integer minor units; `paidRevenueMinor` is
the part of it on orders staff marked paid. Neither is an amount Scanduro held.
`unpricedOrders` counts orders with no summable total, so `revenueMinor` is honest about what
it leaves out. Omit `from` and `to` for the venue's whole history; the range is echoed back so
a report can state what it covers.

## Query parameters

- `from` string
- `to` string

## Response `200`

Counts and money for the range.

- object
  - `data` object, required
    - `venueId` string, required
    - `from` string, required
    - `to` string, required
    - `orders` integer, required
    - `paidOrders` integer, required
    - `unpaidOrders` integer
    - `revenueMinor` integer, required: Integer minor units ordered in the range.
    - `paidRevenueMinor` integer
    - `unpricedOrders` integer
    - `currency` string, required

## Other responses

- `400`: Validation failure, a missing Idempotency-Key, or an unusable cursor.
- `401`: No key, a malformed key, an unknown key, a revoked key or an expired key. Deliberately one response for all five: telling the caller which applies would make the endpoint an oracle for enumerating valid keys.
- `403`: Either the plan does not include API access (`plan_required`) or the key does not carry the required scope (`missing_scope`). The credential itself is valid in both cases.
- `404`: No such code in this workspace. Another tenant's id reads as absent, not as forbidden.
- `429`: Per-key limit reached. Retry-After gives the seconds remaining in the window.

---

[API](https://skmtc.dev/scanduro/apis/scanduro-public-api.md) · [All operations](https://skmtc.dev/scanduro/apis/scanduro-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scanduro/apis/scanduro-public-api/revisions/cdb36d96cad7?raw)
