Analytics
Figures about your account over time: quote volume, value and reviews. Integrators only.
Endpoints
The integrator analytics object
Figures about your account for a period: quote volume, quoted value, slicing time, API usage, approval reviews and orders.
Attributes
- objectstring
Names the type of this object. Always
integrator_analytics. - periodobject
The window this answer covers.
- previous_periodobject
The window of the same length just before
period, whichquotes.previouscovers. Compare the two for change. - filtersobject
The filters applied, as understood.
- quotesobject
Your quotes in the period, with the filters.
- api_usageobject
Calls made with your API keys in the period, from the request log (kept 30 days). Dashboard traffic is not counted. The
api_keyfilter applies;statusdoes not. - reviewsobject
Approval reviews of your files since the account began. Not limited by the period or the filters.
- ordersobject
Your orders placed in the period, both modes. Amounts are the ones get_integrator_order shows for each order (
charges.total, completedrefunds,earnings.net), added up; a cancelled order keeps what it was charged and its refund. Thestatusandapi_keyfilters do not apply.
{
"object": "integrator_analytics",
"period": {
"from": "2026-09-22T00:00:00Z",
"to": "2026-10-22T00:00:00Z",
"granularity": "day",
"time_zone": "UTC"
},
"previous_period": {
"from": "2026-08-23T00:00:00Z",
"to": "2026-09-22T00:00:00Z"
},
"filters": {
"status": [],
"api_key": null
},
"quotes": {
"totals": {
"created": 128,
"processing": 2,
"ready": 118,
"failed": 8,
"success_rate": 0.9365,
"quoted_value": {
"amount": 162480,
"currency": "usd"
},
"average_value": {
"amount": 1377,
"currency": "usd"
},
"median_slicing_seconds": 74
},
"previous": {
"created": 97,
"processing": 0,
"ready": 89,
"failed": 8,
"success_rate": 0.9175,
"quoted_value": {
"amount": 118300,
"currency": "usd"
},
"average_value": {
"amount": 1329,
"currency": "usd"
},
"median_slicing_seconds": 81
},
"series": [
{
"start": "2026-10-21T00:00:00Z",
"created": 6,
"ready": 5,
"failed": 1,
"quoted_value": {
"amount": 7240,
"currency": "usd"
}
}
],
"value_distribution": [
{
"min": {
"amount": 0,
"currency": "usd"
},
"max": {
"amount": 500,
"currency": "usd"
},
"count": 12
},
{
"min": {
"amount": 25000,
"currency": "usd"
},
"max": null,
"count": 1
}
],
"file_types": [
{
"type": "stl",
"created": 96,
"ready": 90
}
],
"top_files": [
{
"name": "phone-stand.stl",
"created": 9,
"ready": 9,
"latest_price": {
"amount": 1240,
"currency": "usd"
},
"last_quoted_at": "2026-10-21T14:02:11Z"
}
],
"sources": [
{
"api_key": {
"id": "key_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "api_key",
"name": "Production server"
},
"created": 110,
"ready": 103
},
{
"api_key": null,
"created": 18,
"ready": 15
}
]
},
"api_usage": {
"totals": {
"calls": 1840,
"client_errors": 21,
"server_errors": 1,
"error_rate": 0.012,
"p50_ms": 96,
"p95_ms": 412
},
"previous": {
"calls": 1302,
"client_errors": 30,
"server_errors": 0,
"error_rate": 0.023,
"p50_ms": 104,
"p95_ms": 455
},
"series": [
{
"start": "2026-10-21T00:00:00Z",
"calls": 74,
"errors": 1,
"p95_ms": 380
}
],
"endpoints": [
{
"method": "GET",
"route": "/v2/quotes/:id",
"calls": 1520,
"errors": 4,
"p95_ms": 160
}
],
"sources": [
{
"api_key": {
"id": "key_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "api_key",
"name": "Production server"
},
"calls": 1840,
"errors": 22
}
]
},
"reviews": {
"requests_sent": 2,
"files_in_review": 0,
"files_approved": 7,
"files_rejected": 3,
"rejection_reasons": [
{
"reason": "Walls under 0.8 mm will break in print.",
"count": 2
}
]
},
"orders": {
"totals": {
"created": 14,
"paid": 13,
"cancelled": 1,
"wallet": {
"orders": 8,
"charged": {
"amount": 46400,
"currency": "usd"
},
"refunded": {
"amount": 5800,
"currency": "usd"
},
"spend": {
"amount": 40600,
"currency": "usd"
},
"average_order_value": {
"amount": 5800,
"currency": "usd"
}
},
"checkout": {
"orders": 5,
"charged": {
"amount": 42300,
"currency": "usd"
},
"refunded": {
"amount": 0,
"currency": "usd"
},
"sales": {
"amount": 42300,
"currency": "usd"
},
"earnings": {
"amount": 13240,
"currency": "usd"
},
"average_order_value": {
"amount": 8460,
"currency": "usd"
}
}
},
"previous": {
"created": 9,
"paid": 8,
"cancelled": 0,
"wallet": {
"orders": 5,
"charged": {
"amount": 30150,
"currency": "usd"
},
"refunded": {
"amount": 0,
"currency": "usd"
},
"spend": {
"amount": 30150,
"currency": "usd"
},
"average_order_value": {
"amount": 6030,
"currency": "usd"
}
},
"checkout": {
"orders": 3,
"charged": {
"amount": 19800,
"currency": "usd"
},
"refunded": {
"amount": 0,
"currency": "usd"
},
"sales": {
"amount": 19800,
"currency": "usd"
},
"earnings": {
"amount": 6120,
"currency": "usd"
},
"average_order_value": {
"amount": 6600,
"currency": "usd"
}
}
},
"series": [
{
"start": "2026-10-21T00:00:00Z",
"created": 2,
"wallet": 1,
"checkout": 1,
"wallet_spend": {
"amount": 5800,
"currency": "usd"
},
"checkout_sales": {
"amount": 8460,
"currency": "usd"
}
}
],
"by_status": [
{
"status": "in_production",
"count": 3
},
{
"status": "shipped",
"count": 4
},
{
"status": "completed",
"count": 6
},
{
"status": "cancelled",
"count": 1
}
],
"by_mode": [
{
"mode": "wallet",
"created": 8,
"paid": 8
},
{
"mode": "checkout",
"created": 6,
"paid": 5
}
],
"top_quotes": [
{
"quote": {
"id": "qte_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "quote",
"name": "phone-stand.stl"
},
"orders": 7,
"units": 42
}
]
}
}Get your analytics
GET/
- Credentials
- A signed-in dashboard session only; API keys are refused.
- For
- Integrators
- Operation id
get_integrator_analytics
Figures about your quotes and API calls for a period: how many quotes you created and how they ended, their total and average unit price, how long slicing took, a time series, the spread of prices, file types, your most quoted files and which API keys created them, plus the outcome of your approval reviews.
The orders section covers the orders you placed in the period: counts over time, by status and by mode, your wallet spend on production, your checkout sales and earnings, average order value and the quotes ordered most. Its amounts are the per-order figures of get_integrator_order, added up.
Every total comes with the same figure for the equal period just before, for comparison. Periods are up to 731 days and 366 buckets; all dates are UTC.
Integrators only, and only with a signed-in dashboard session: an API key cannot read analytics (credential_not_allowed).
Query parameters
- fromtimestamp
Start of the period, included. Defaults to 30 days before
to. - totimestamp
End of the period, excluded. Defaults to the end of today (UTC).
- granularitystring
Bucket size of
quotes.series. Defaults todayup to 62 days,weekup to 184 days,monthbeyond.Possible valuesdayweekmonth - statusarray of QuoteStatus
Only quotes in these states. Repeat for several.
Possible valuesprocessingreadyfailed - api_keystring
Only quotes created with this API key.
Returns200 OK
Your analytics for the period. Returns the integrator analytics object.
Responses
- 200
Your analytics for the period.
- 400
A filter is invalid (
validation_failed),fromis not beforetoor the period is too long (invalid_period), or the granularity gives too many buckets (too_many_buckets). - 401
Credentials are missing (
missing_credentials), the API key is unknown or inactive (invalid_api_key), the session expired (invalid_session), or both a key and a session were sent (ambiguous_credentials). - 403
Called with an API key instead of a session (
credential_not_allowed), or not an integrator account (actor_not_allowed). - 429
Too many requests (
rate_limited): the limit is 500 per minute per API key (or signed-in user). Wait for the number of seconds in theRetry-Afterheader, then retry;detailshaslimit,window_seconds,reset_atandretry_after_seconds.
Errors use the error object.
curl "https://public-api.dapi.digital/v2/integrator/analytics" \
-H "x-api-key: $DAPI_API_KEY"{
"object": "integrator_analytics",
"period": {
"from": "2026-09-22T00:00:00Z",
"to": "2026-10-22T00:00:00Z",
"granularity": "day",
"time_zone": "UTC"
},
"previous_period": {
"from": "2026-08-23T00:00:00Z",
"to": "2026-09-22T00:00:00Z"
},
"filters": {
"status": [],
"api_key": null
},
"quotes": {
"totals": {
"created": 128,
"processing": 2,
"ready": 118,
"failed": 8,
"success_rate": 0.9365,
"quoted_value": {
"amount": 162480,
"currency": "usd"
},
"average_value": {
"amount": 1377,
"currency": "usd"
},
"median_slicing_seconds": 74
},
"previous": {
"created": 97,
"processing": 0,
"ready": 89,
"failed": 8,
"success_rate": 0.9175,
"quoted_value": {
"amount": 118300,
"currency": "usd"
},
"average_value": {
"amount": 1329,
"currency": "usd"
},
"median_slicing_seconds": 81
},
"series": [
{
"start": "2026-10-21T00:00:00Z",
"created": 6,
"ready": 5,
"failed": 1,
"quoted_value": {
"amount": 7240,
"currency": "usd"
}
}
],
"value_distribution": [
{
"min": {
"amount": 0,
"currency": "usd"
},
"max": {
"amount": 500,
"currency": "usd"
},
"count": 12
},
{
"min": {
"amount": 25000,
"currency": "usd"
},
"max": null,
"count": 1
}
],
"file_types": [
{
"type": "stl",
"created": 96,
"ready": 90
}
],
"top_files": [
{
"name": "phone-stand.stl",
"created": 9,
"ready": 9,
"latest_price": {
"amount": 1240,
"currency": "usd"
},
"last_quoted_at": "2026-10-21T14:02:11Z"
}
],
"sources": [
{
"api_key": {
"id": "key_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "api_key",
"name": "Production server"
},
"created": 110,
"ready": 103
},
{
"api_key": null,
"created": 18,
"ready": 15
}
]
},
"api_usage": {
"totals": {
"calls": 1840,
"client_errors": 21,
"server_errors": 1,
"error_rate": 0.012,
"p50_ms": 96,
"p95_ms": 412
},
"previous": {
"calls": 1302,
"client_errors": 30,
"server_errors": 0,
"error_rate": 0.023,
"p50_ms": 104,
"p95_ms": 455
},
"series": [
{
"start": "2026-10-21T00:00:00Z",
"calls": 74,
"errors": 1,
"p95_ms": 380
}
],
"endpoints": [
{
"method": "GET",
"route": "/v2/quotes/:id",
"calls": 1520,
"errors": 4,
"p95_ms": 160
}
],
"sources": [
{
"api_key": {
"id": "key_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "api_key",
"name": "Production server"
},
"calls": 1840,
"errors": 22
}
]
},
"reviews": {
"requests_sent": 2,
"files_in_review": 0,
"files_approved": 7,
"files_rejected": 3,
"rejection_reasons": [
{
"reason": "Walls under 0.8 mm will break in print.",
"count": 2
}
]
},
"orders": {
"totals": {
"created": 14,
"paid": 13,
"cancelled": 1,
"wallet": {
"orders": 8,
"charged": {
"amount": 46400,
"currency": "usd"
},
"refunded": {
"amount": 5800,
"currency": "usd"
},
"spend": {
"amount": 40600,
"currency": "usd"
},
"average_order_value": {
"amount": 5800,
"currency": "usd"
}
},
"checkout": {
"orders": 5,
"charged": {
"amount": 42300,
"currency": "usd"
},
"refunded": {
"amount": 0,
"currency": "usd"
},
"sales": {
"amount": 42300,
"currency": "usd"
},
"earnings": {
"amount": 13240,
"currency": "usd"
},
"average_order_value": {
"amount": 8460,
"currency": "usd"
}
}
},
"previous": {
"created": 9,
"paid": 8,
"cancelled": 0,
"wallet": {
"orders": 5,
"charged": {
"amount": 30150,
"currency": "usd"
},
"refunded": {
"amount": 0,
"currency": "usd"
},
"spend": {
"amount": 30150,
"currency": "usd"
},
"average_order_value": {
"amount": 6030,
"currency": "usd"
}
},
"checkout": {
"orders": 3,
"charged": {
"amount": 19800,
"currency": "usd"
},
"refunded": {
"amount": 0,
"currency": "usd"
},
"sales": {
"amount": 19800,
"currency": "usd"
},
"earnings": {
"amount": 6120,
"currency": "usd"
},
"average_order_value": {
"amount": 6600,
"currency": "usd"
}
}
},
"series": [
{
"start": "2026-10-21T00:00:00Z",
"created": 2,
"wallet": 1,
"checkout": 1,
"wallet_spend": {
"amount": 5800,
"currency": "usd"
},
"checkout_sales": {
"amount": 8460,
"currency": "usd"
}
}
],
"by_status": [
{
"status": "in_production",
"count": 3
},
{
"status": "shipped",
"count": 4
},
{
"status": "completed",
"count": 6
},
{
"status": "cancelled",
"count": 1
}
],
"by_mode": [
{
"mode": "wallet",
"created": 8,
"paid": 8
},
{
"mode": "checkout",
"created": 6,
"paid": 5
}
],
"top_quotes": [
{
"quote": {
"id": "qte_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
"object": "quote",
"name": "phone-stand.stl"
},
"orders": 7,
"units": 42
}
]
}
}