Public API
Create an API key, then fetch your sales metrics as JSON, broken down by date, store, country, customer type or status.
The Fullmetrix public API returns your sales metrics as a table, in JSON format. Use it to feed an internal tool, an automated spreadsheet, a data warehouse or a custom dashboard. The Looker Studio connector runs on it.
An API is a web address that a program queries instead of a browser. You send a request that says what you want, for example daily revenue for last month, and Fullmetrix answers with the figures.
The API is read-only. It cannot change anything in Fullmetrix or in your store.
Create an API key
Every request must carry an API key. The key identifies the organization whose data you read. There is nothing else to configure.
Open API keys
In Fullmetrix, open Settings, then the API Keys tab.
Create the key
Click Create a key. In Key name, write what it will be used for, for example "Data warehouse" or "Reporting script". Click Create a key to confirm.
Copy the key
The window shows the full key, which starts with fmx_. Click the copy icon, then store the key somewhere safe, such as a password manager. Click Done.
The key is shown only once
Once the window is closed, Fullmetrix only shows the start of the key, in the Prefix column. If you lost it, create a new one and revoke the old one.
The key list shows each key's Name, Prefix, creation date under Created and Last used. That last column helps you spot a key nobody uses anymore. To cut a key off, click Revoke, then confirm. Any integration using it stops working immediately. This screen is covered in detail in API Keys.
Create one key per tool. If you have to cut one off, the others keep working.
Authenticate
The API base address is https://app.fullmetrix.com. Each request carries the key in the Authorization header, after the word Bearer.
curl https://app.fullmetrix.com/api/reports/catalog \
-H "Authorization: Bearer fmx_YOUR_KEY"Keys work during the free trial and during the subscription. If the organization's subscription stops, requests are refused until it resumes.
Never put the key in a web page
A key written in a website's code can be read by every visitor. Call the API from a server, a script or a tool that keeps the key secret.
List the available fields
GET /api/reports/catalog returns the dimensions and metrics you can ask for. A dimension is a way to split the data, such as date or country. A metric is a calculated figure, such as the number of orders.
curl https://app.fullmetrix.com/api/reports/catalog \
-H "Authorization: Bearer fmx_YOUR_KEY"{
"dimensions": [
{ "id": "date", "label": "Date", "type": "date" },
{ "id": "store", "label": "Boutique", "type": "string" },
{ "id": "country", "label": "Pays", "type": "string" },
{ "id": "customer_type", "label": "Type client", "type": "string" },
{ "id": "status", "label": "Statut commande", "type": "string" }
],
"metrics": [
{ "id": "orders", "label": "Commandes", "type": "number" },
{ "id": "items_sold", "label": "Produits vendus", "type": "number" },
{ "id": "gross_sales", "label": "CA brut", "type": "currency" },
{ "id": "net_revenue", "label": "CA net", "type": "currency" },
{ "id": "average_order_value", "label": "Panier moyen", "type": "currency" },
{ "id": "taxes", "label": "Taxes", "type": "currency" },
{ "id": "shipping", "label": "Livraison", "type": "currency" },
{ "id": "unique_customers", "label": "Clients uniques", "type": "number" },
{ "id": "new_customers", "label": "Nouveaux clients", "type": "number" },
{ "id": "returning_customers", "label": "Clients récurrents", "type": "number" }
]
}The label values are returned in French. Use the id values in your requests.
This call is also a way to check that a key works. It answers with status 200 when the key is valid.
Dimensions
| Identifier | Content |
|---|---|
date | The order day, formatted YYYY-MM-DD |
store | The store address |
country | The billing country, or Unknown when missing |
customer_type | new for a customer's first order in the period, returning for a customer who ordered before, anonymous for an order without a usable email address |
status | The order status, as your store sends it |
Metrics
| Identifier | Content |
|---|---|
orders | The number of orders |
items_sold | The number of items sold |
gross_sales | Gross sales, the total of the orders |
net_revenue | Net revenue, calculated as in the Revenue report |
average_order_value | Average order value, net revenue divided by the number of orders |
taxes | Total taxes |
shipping | Total shipping fees |
unique_customers | The number of distinct customers |
new_customers | Customers whose first order falls within the period |
returning_customers | Customers in the period who had ordered before |
Amounts are in your stores' currency and rounded to two decimals. Figures follow your Report settings, including excluded statuses and net sales deductions.
Query your metrics
GET /api/reports/tabular returns a table of rows. Each row combines the requested dimensions with the metrics calculated for that combination.
Parameters
| Parameter | Required | Description |
|---|---|---|
metrics | Yes | One or more metrics separated by commas, for example orders,net_revenue |
dimensions | No | One or more dimensions separated by commas. Without a dimension, the response holds a single row of totals |
from | No | The first day, formatted YYYY-MM-DD. Defaults to 30 days before to |
to | No | The last day included, formatted YYYY-MM-DD. Defaults to today |
timezone | No | An IANA time zone, for example Europe/Paris. It sets the day each order belongs to in the date dimension. Defaults to UTC |
limit | No | The maximum number of rows. 10,000 by default, 100,000 at most |
The requested period can cover up to two years. Beyond that, the API shortens it while keeping the end date, and the response shows the dates actually used in from and to.
The from and to dates are read in universal time, midnight to midnight UTC. The timezone parameter only changes the day shown for each order. Around midnight, a few orders can therefore land one day apart from your Fullmetrix reports.
Example, revenue by day
curl "https://app.fullmetrix.com/api/reports/tabular?dimensions=date&metrics=orders,net_revenue&from=2026-09-01&to=2026-09-30&timezone=Europe/Paris" \
-H "Authorization: Bearer fmx_YOUR_KEY"{
"dimensions": ["date"],
"metrics": ["orders", "net_revenue"],
"from": "2026-09-01",
"to": "2026-09-30",
"timezone": "Europe/Paris",
"rows": [
{ "date": "2026-09-01", "orders": 42, "net_revenue": 2318.4 },
{ "date": "2026-09-02", "orders": 37, "net_revenue": 1975.1 }
],
"rowCount": 30
}Rows are sorted in the order of the requested dimensions. rowCount gives the number of rows returned.
Example, sales by country and customer type
curl "https://app.fullmetrix.com/api/reports/tabular?dimensions=country,customer_type&metrics=orders,net_revenue,average_order_value&from=2026-07-01&to=2026-09-30" \
-H "Authorization: Bearer fmx_YOUR_KEY"Example, totals for a period
Without a dimension, the response holds a single row.
curl "https://app.fullmetrix.com/api/reports/tabular?metrics=orders,gross_sales,net_revenue,new_customers&from=2026-01-01&to=2026-09-30" \
-H "Authorization: Bearer fmx_YOUR_KEY"Example, compare your stores
curl "https://app.fullmetrix.com/api/reports/tabular?dimensions=store&metrics=orders,net_revenue&from=2026-09-01&to=2026-09-30" \
-H "Authorization: Bearer fmx_YOUR_KEY"Add up customers with care
unique_customers, new_customers and returning_customers count distinct people. A customer who orders on two different days shows up on both days. The sum of daily rows can therefore exceed the total for the period. For a customer total, request the period without the date dimension.
Response codes and errors
Errors return a JSON object with an error field describing the problem.
| Code | Meaning | What to do |
|---|---|---|
| 200 | The request succeeded | Nothing |
| 400 | A parameter is invalid, for example a malformed date, no metric, or an unknown identifier | Fix the request. For an unknown identifier, the response lists the culprits in unknownDimensions and unknownMetrics |
| 401 | The Authorization header is missing, or the key is invalid, revoked or refused | Check the key and the organization's subscription status |
| 429 | Too many requests in a short time | Wait the number of seconds given in the Retry-After header, then try again |
Example 400 response for an unknown metric.
{
"error": "Dimensions ou métriques inconnues",
"unknownDimensions": [],
"unknownMetrics": ["revenue"]
}With a 429 code, the response also carries the X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers. Space out your calls and keep results that do not change, such as past days.
A successful response can be served from a cache for one minute. Two identical calls close together therefore return the same result.
The API accepts calls coming from a browser, but remember that the key must never be exposed in a public page.
Frequently asked questions
Developers
Discover the three ways to take your Fullmetrix data to other tools, the public API, the MCP server for Claude and ChatGPT, and the Looker Studio connector.
MCP server
Connect Claude, ChatGPT or another compatible AI assistant to your Fullmetrix data and query your store from the assistant you already use.