# Analytics

Figures about your account over time: quote volume, value and reviews. Integrators only.

## Endpoints

-   [GET `/v2/integrator/analytics`](https://public-api.dapi.digital/docs/reference/analytics.md#get_integrator_analytics)

## The integrator analytics object

Figures about your account for a period: quote volume, quoted value, slicing time, API usage, approval reviews and orders.

### Attributes

-   `object` (string): Names the type of this object. Always `integrator_analytics`.
-   `period` (object): The window this answer covers.
    -   `from` (timestamp): Start of the period, included.
    -   `to` (timestamp): End of the period, excluded.
    -   `granularity` (AnalyticsGranularity): Bucket size of the time series: `day` (UTC calendar day), `week` (ISO week starting Monday, UTC) or `month` (UTC calendar month).
    -   `time_zone` (string): Buckets and dates are in UTC.
-   `previous_period` (object): The window of the same length just before `period`, which `quotes.previous` covers. Compare the two for change.
    -   `from` (timestamp): Point in time, ISO 8601 in UTC.
    -   `to` (timestamp): Point in time, ISO 8601 in UTC.
-   `filters` (object): The filters applied, as understood.
    -   `status` (array of QuoteStatus): Quote states the figures are limited to; empty means all.
        
        Possible values: `processing`, `ready`, `failed`.
        
    -   `api_key` (string or null): Only quotes created with this key; null means every quote.
-   `quotes` (object): Your quotes in the period, with the filters.
    -   `totals` (object): For `period`.
        -   `created` (integer): Quotes created in the period.
            
            Range at least 0.
            
        -   `processing` (integer): Of those, still being sliced.
            
            Range at least 0.
            
        -   `ready` (integer): Of those, priced.
            
            Range at least 0.
            
        -   `failed` (integer): Of those, failed.
            
            Range at least 0.
            
        -   `success_rate` (number or null): Share of finished quotes that came out priced: `ready / (ready + failed)`, from 0 to 1. Null when no quote finished.
            
            Range 0 to 1.
            
        -   `quoted_value` (object): Sum of the unit prices of the priced quotes: what one copy of each would cost.
            -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
            -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
        -   `average_value` (object or null): Mean unit price of the priced quotes. Null without any.
            -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
            -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
        -   `median_slicing_seconds` (integer or null): Median time from the start of slicing to a price, in seconds. Null without any priced quote.
            
            Range at least 0.
            
    -   `previous` (object): For `previous_period`, with the same filters.
        -   `created` (integer): Quotes created in the period.
            
            Range at least 0.
            
        -   `processing` (integer): Of those, still being sliced.
            
            Range at least 0.
            
        -   `ready` (integer): Of those, priced.
            
            Range at least 0.
            
        -   `failed` (integer): Of those, failed.
            
            Range at least 0.
            
        -   `success_rate` (number or null): Share of finished quotes that came out priced: `ready / (ready + failed)`, from 0 to 1. Null when no quote finished.
            
            Range 0 to 1.
            
        -   `quoted_value` (object): Sum of the unit prices of the priced quotes: what one copy of each would cost.
            -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
            -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
        -   `average_value` (object or null): Mean unit price of the priced quotes. Null without any.
            -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
            -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
        -   `median_slicing_seconds` (integer or null): Median time from the start of slicing to a price, in seconds. Null without any priced quote.
            
            Range at least 0.
            
    -   `series` (array of object): One entry per bucket of `period`, oldest first, including empty buckets. The first and last buckets can be partial.
        -   `start` (timestamp): Start of the bucket.
        -   `created` (integer): Quotes created in the bucket.
            
            Range at least 0.
            
        -   `ready` (integer): Of those, priced.
            
            Range at least 0.
            
        -   `failed` (integer): Of those, failed.
            
            Range at least 0.
            
        -   `quoted_value` (object): Sum of the unit prices priced in the bucket.
            -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
            -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
    -   `value_distribution` (array of object): How the unit prices of priced quotes spread over fixed ranges: under $5, $5 to $10, $10 to $25, $25 to $50, $50 to $100, $100 to $250, $250 and up.
        -   `min` (object): Lower bound, included.
            -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
            -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
        -   `max` (object or null): Upper bound, excluded. Null for the last range.
            -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
            -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
        -   `count` (integer): Priced quotes whose unit price falls in the range.
            
            Range at least 0.
            
    -   `file_types` (array of object): Quotes by file type, most quoted first.
        -   `type` (string): File extension in lowercase without the dot, or `other` when the file name has none.
        -   `created` (integer): Quotes of this file type.
            
            Range at least 0.
            
        -   `ready` (integer): Of those, priced.
            
            Range at least 0.
            
    -   `top_files` (array of object): The 10 file names quoted most often in the period.
        -   `name` (string): File name as uploaded.
        -   `created` (integer): Quotes of a file with this name.
            
            Range at least 0.
            
        -   `ready` (integer): Of those, priced.
            
            Range at least 0.
            
        -   `latest_price` (object or null): Unit price of the most recent priced quote of this file. Null when none was priced.
            -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
            -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
        -   `last_quoted_at` (timestamp): Point in time, ISO 8601 in UTC.
    -   `sources` (array of object): Quotes by API key, most first.
        -   `api_key` (object or null): The key the quotes were created with; null for quotes made from the dashboard.
            -   `id` (string): Unique identifier of the api key, prefixed with `key_`. Treat it as an opaque string: store it and compare it, never parse it.
            -   `object` (string): Names the type of this object. Always `api_key`.
            -   `name` (string): The key's label, or "Deleted key" when it no longer exists.
        -   `created` (integer): Quotes from this source.
            
            Range at least 0.
            
        -   `ready` (integer): Of those, priced.
            
            Range at least 0.
            
-   `api_usage` (object): Calls made with your API keys in the period, from the request log (kept 30 days). Dashboard traffic is not counted. The `api_key` filter applies; `status` does not.
    -   `totals` (object): For `period`.
        -   `calls` (integer): Calls made with your API keys.
            
            Range at least 0.
            
        -   `client_errors` (integer): Of those, answered with a 4xx status.
            
            Range at least 0.
            
        -   `server_errors` (integer): Of those, answered with a 5xx status.
            
            Range at least 0.
            
        -   `error_rate` (number or null): Share of calls answered with an error (4xx or 5xx), from 0 to 1. Null without calls.
            
            Range 0 to 1.
            
        -   `p50_ms` (integer or null): Median time to answer, in milliseconds. Null without calls.
            
            Range at least 0.
            
        -   `p95_ms` (integer or null): 95th percentile time to answer, in milliseconds. Null without calls.
            
            Range at least 0.
            
    -   `previous` (object): For `previous_period`.
        -   `calls` (integer): Calls made with your API keys.
            
            Range at least 0.
            
        -   `client_errors` (integer): Of those, answered with a 4xx status.
            
            Range at least 0.
            
        -   `server_errors` (integer): Of those, answered with a 5xx status.
            
            Range at least 0.
            
        -   `error_rate` (number or null): Share of calls answered with an error (4xx or 5xx), from 0 to 1. Null without calls.
            
            Range 0 to 1.
            
        -   `p50_ms` (integer or null): Median time to answer, in milliseconds. Null without calls.
            
            Range at least 0.
            
        -   `p95_ms` (integer or null): 95th percentile time to answer, in milliseconds. Null without calls.
            
            Range at least 0.
            
    -   `series` (array of object): One entry per bucket of `period`, oldest first.
        -   `start` (timestamp): Point in time, ISO 8601 in UTC.
        -   `calls` (integer): Calls in the bucket.
            
            Range at least 0.
            
        -   `errors` (integer): Of those, answered with a 4xx or 5xx status.
            
            Range at least 0.
            
        -   `p95_ms` (integer or null): 95th percentile time to answer in the bucket.
            
            Range at least 0.
            
    -   `endpoints` (array of object): The 10 operations you called most.
        -   `method` (string): HTTP method, uppercase.
        -   `route` (string or null): The operation's path template; null for calls to paths no operation answers.
        -   `calls` (integer): Calls to this operation.
            
            Range at least 0.
            
        -   `errors` (integer): Of those, answered with an error.
            
            Range at least 0.
            
        -   `p95_ms` (integer or null): 95th percentile time to answer.
            
            Range at least 0.
            
    -   `sources` (array of object): Calls by API key, most first.
        -   `api_key` (object): The API key the calls were made with.
            -   `id` (string): Unique identifier of the api key, prefixed with `key_`. Treat it as an opaque string: store it and compare it, never parse it.
            -   `object` (string): Names the type of this object. Always `api_key`.
            -   `name` (string): The key's label, or "Deleted key" when it no longer exists.
        -   `calls` (integer): Calls made with this key.
            
            Range at least 0.
            
        -   `errors` (integer): Of those, answered with an error.
            
            Range at least 0.
            
-   `reviews` (object): Approval reviews of your files since the account began. Not limited by the period or the filters.
    -   `requests_sent` (integer): Approval requests you sent.
        
        Range at least 0.
        
    -   `files_in_review` (integer): Files waiting for a decision.
        
        Range at least 0.
        
    -   `files_approved` (integer): Files approved.
        
        Range at least 0.
        
    -   `files_rejected` (integer): Files rejected.
        
        Range at least 0.
        
    -   `rejection_reasons` (array of object): The 5 most common rejection reasons.
        -   `reason` (string): The reviewer's reason, as written.
        -   `count` (integer): Files rejected with this reason.
            
            Range at least 0.
            
-   `orders` (object): Your orders placed in the period, both modes. Amounts are the ones get\_integrator\_order shows for each order (`charges.total`, completed `refunds`, `earnings.net`), added up; a cancelled order keeps what it was charged and its refund. The `status` and `api_key` filters do not apply.
    -   `totals` (object): For `period`.
        -   `created` (integer): Orders placed in the period, in any status.
            
            Range at least 0.
            
        -   `paid` (integer): Of those, paid: every `wallet` order, and `checkout` orders whose customer completed the checkout.
            
            Range at least 0.
            
        -   `cancelled` (integer): Of those, now `cancelled`.
            
            Range at least 0.
            
        -   `wallet` (object): Orders you paid from your wallet at the production price.
            -   `orders` (integer): Paid `wallet` orders.
                
                Range at least 0.
                
            -   `charged` (object): Sum of their `charges.total`: what you paid for production and shipping (VAT included when charged), as get\_integrator\_order shows it.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `refunded` (object): Sum of their completed `refunds`, back to your wallet (cancellations included).
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `spend` (object): `charged` less `refunded`: your net production spend.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `average_order_value` (object or null): `charged` divided by `orders`. Null without orders.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
        -   `checkout` (object): Orders your customers paid through a 3DAPI checkout link at your sales price. An unpaid link (open or expired) moves no money and is not counted here.
            -   `orders` (integer): Paid `checkout` orders.
                
                Range at least 0.
                
            -   `charged` (object): Sum of their `charges.total`: what your customers paid, VAT and shipping included, as get\_integrator\_order shows it.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `refunded` (object): Sum of their completed `refunds`, back to your customers' cards.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `sales` (object): `charged` less `refunded`: your net checkout sales.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `earnings` (object): Sum of their `earnings.net`: what you earn after the production price, the card fee and refunds. Credited to your wallet when each order completes.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `average_order_value` (object or null): `charged` divided by `orders`. Null without orders.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
    -   `previous` (object): For `previous_period`.
        -   `created` (integer): Orders placed in the period, in any status.
            
            Range at least 0.
            
        -   `paid` (integer): Of those, paid: every `wallet` order, and `checkout` orders whose customer completed the checkout.
            
            Range at least 0.
            
        -   `cancelled` (integer): Of those, now `cancelled`.
            
            Range at least 0.
            
        -   `wallet` (object): Orders you paid from your wallet at the production price.
            -   `orders` (integer): Paid `wallet` orders.
                
                Range at least 0.
                
            -   `charged` (object): Sum of their `charges.total`: what you paid for production and shipping (VAT included when charged), as get\_integrator\_order shows it.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `refunded` (object): Sum of their completed `refunds`, back to your wallet (cancellations included).
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `spend` (object): `charged` less `refunded`: your net production spend.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `average_order_value` (object or null): `charged` divided by `orders`. Null without orders.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
        -   `checkout` (object): Orders your customers paid through a 3DAPI checkout link at your sales price. An unpaid link (open or expired) moves no money and is not counted here.
            -   `orders` (integer): Paid `checkout` orders.
                
                Range at least 0.
                
            -   `charged` (object): Sum of their `charges.total`: what your customers paid, VAT and shipping included, as get\_integrator\_order shows it.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `refunded` (object): Sum of their completed `refunds`, back to your customers' cards.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `sales` (object): `charged` less `refunded`: your net checkout sales.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `earnings` (object): Sum of their `earnings.net`: what you earn after the production price, the card fee and refunds. Credited to your wallet when each order completes.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
            -   `average_order_value` (object or null): `charged` divided by `orders`. Null without orders.
                -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
                -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
    -   `series` (array of object): One entry per bucket of `period`, oldest first, including empty buckets.
        -   `start` (timestamp): Start of the bucket.
        -   `created` (integer): Orders placed in the bucket, in any status.
            
            Range at least 0.
            
        -   `wallet` (integer): Of those, `wallet` orders.
            
            Range at least 0.
            
        -   `checkout` (integer): Of those, `checkout` orders.
            
            Range at least 0.
            
        -   `wallet_spend` (object): Net spend (`charged` less `refunded`) of the paid `wallet` orders placed in the bucket.
            -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
            -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
        -   `checkout_sales` (object): Net sales (`charged` less `refunded`) of the paid `checkout` orders placed in the bucket.
            -   `amount` (integer): Amount in the smallest currency unit (cents for usd). 5000 means $50.00. Never a decimal.
            -   `currency` (string): Three-letter ISO 4217 currency code, lowercase. Every amount is `usd` today.
    -   `by_status` (array of object): Orders placed in the period by their current status, in lifecycle order. Statuses without orders are left out.
        -   `status` (OrderStatus):
            
            Where the order is:
            
            -   `awaiting_payment`: you still have to pay for it.
            -   `paid`: paid, waiting to be assigned to a production partner.
            -   `assigned`: a production partner has it; production has not started.
            -   `in_production`: being made.
            -   `shipped`: on its way to the customer. `shipping` has the tracking details.
            -   `completed`: delivered and settled.
            -   `on_hold`: there is not enough stock to fulfil it.
            -   `rejected`: the production partner refused it.
            -   `returned`: sent back after shipping.
            -   `cancelled`: cancelled, usually after a full refund.
            
        -   `count` (integer): Orders placed in the period now in this status.
            
            Range at least 0.
            
    -   `by_mode` (array of object): Orders placed in the period by mode.
        -   `mode` (string): `wallet`: you pay the production price plus shipping from your wallet (a shortfall is charged to your saved card). `checkout`: your customer pays the sales price you set through a hosted 3DAPI checkout and you earn the difference.
        -   `created` (integer): Orders placed in the period in this mode.
            
            Range at least 0.
            
        -   `paid` (integer): Of those, paid.
            
            Range at least 0.
            
    -   `top_quotes` (array of object): The 10 quotes with the most units on paid orders placed in the period.
        -   `quote` (object): The quote ordered.
            -   `id` (string): Unique identifier of the quote, prefixed with `qte_`. Treat it as an opaque string: store it and compare it, never parse it.
            -   `object` (string): Names the type of this object. Always `quote`.
            -   `name` (string): The quote name.
        -   `orders` (integer): Paid orders with a line from this quote.
            
            Range at least 0.
            
        -   `units` (integer): Units of this quote on those orders.
            
            Range at least 0.
            

**The integrator analytics object**

```json
{
  "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 `/v2/integrator/analytics`

- **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

-   `from` (timestamp): Start of the period, included. Defaults to 30 days before `to`.
-   `to` (timestamp): End of the period, excluded. Defaults to the end of today (UTC).
-   `granularity` (string): Bucket size of `quotes.series`. Defaults to `day` up to 62 days, `week` up to 184 days, `month` beyond.
-   `status` (array of QuoteStatus): Only quotes in these states. Repeat for several. Same shape as `QuoteStatus` above.
-   `api_key` (string): Only quotes created with this API key.

### Returns 200 OK

Your analytics for the period. Returns [the integrator analytics object](https://public-api.dapi.digital/docs/reference/analytics.md#integrator_analytics_object).

### Responses

-   `200`: Your analytics for the period.
-   `400`: A filter is invalid (`validation_failed`), `from` is not before `to` or 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 the `Retry-After` header, then retry; `details` has `limit`, `window_seconds`, `reset_at` and `retry_after_seconds`.

Errors use [the error object](https://public-api.dapi.digital/docs/guides/errors.md#error-object).

**Request**

```bash
curl "https://public-api.dapi.digital/v2/integrator/analytics" \
  -H "x-api-key: $DAPI_API_KEY"
```

---

3DAPI API Docs. This page on the web: https://public-api.dapi.digital/docs/reference/analytics. Index of every page: https://public-api.dapi.digital/docs/llms.txt.
