Skip to main content
GET /api/partner/analytics Returns a request-time snapshot computed exclusively over orders created with your partner account. The endpoint reads the transactional order records directly; it does not return another partner’s orders and does not use an eventually consistent analytics export. The reporting window is a creation cohort. An order is included when its createdAt falls between the request time minus windowDays and the request time, inclusive. Funnel, completion, evidence, service, and revenue figures then use the current records for that cohort. They are not counts of events that occurred during the window.
Tenancy guarantee: every figure is computed exclusively over orders created with your partner account. Document, shipment, and workflow-event queries are constrained to order IDs from that partner-scoped cohort.

Authentication

This route accepts either credential:
  • Partner API keyAuthorization: Bearer sss_pk_... for server-to-server reads.
  • Linked dashboard session — the SignSealShip session cookie for a signed-in user linked to a partner account.
Bearer-key authentication runs first. If the key resolves, its partner account selects the tenant even when a session cookie is also present. If the key is missing or does not resolve, the route falls back to the session. That fallback determines the error semantics:
401 Unauthorized
401 means that no bearer key resolved and there is no valid signed-in session. A bad bearer key can still succeed when the request also carries a valid linked session.
403 Forbidden
403 means the session is valid but is not linked to a partner account. See authentication for key-handling guidance.

Query parameter

integer
default:"90"
Requested creation-window length. The service clamps the value to 1..366 instead of rejecting an out-of-range integer: values below 1 become 1 and values above 366 become 366. The effective value is returned as windowDays.

Example

curl
200 OK

Response fields

integer
Effective creation-window length after the days value is defaulted and clamped. Always from 1 through 366.
array
Creation-cohort counts grouped by the order’s UTC creation month, ordered oldest to newest. Months with no included orders are omitted.
object
One mutually exclusive current-status bucket per order in the cohort. The five counts always sum to the cohort’s total order count.

Funnel status contract

The mapping is explicit in the service. Status names are case-sensitive PascalCase values from the Order API.
object
Distribution of paid-to-completed durations for qualifying completed orders in the cohort.
Only a Completed order with a recorded payment.cleared workflow event contributes to turnaround. The start is its earliest such event. The end is the order’s current updatedAt, used as the completion stamp because the implementation does not yet have a durable order-completion event. An order with updatedAt before the payment event is excluded. When there are no qualifying samples, both values are 0; zero therefore means no measurable sample, not necessarily instant completion. The response does not include the sample size.
object
Counts of cohort orders carrying each service flag. A multi-service order is counted once in every applicable field, so these values are not mutually exclusive and need not sum to the order count.
object
Count-based evidence inventory for the cohort.
Evidence-count semantics — August 2, 2026: the two evidence counters are artifact and shipment row counts, not unique-order counts or percentages. They are scoped to all orders in the creation cohort, not only orders in totalCompleted. A single order can contribute more than one matching row, so do not divide either field by totalCompleted and call the result a coverage percentage.
integer
Sum of totalCents for cohort orders currently in the paid, inProgress, or completed funnel buckets. USD cents. It excludes created and problem orders and is a current-order-total metric, not a payment-ledger balance.
string
ISO 8601 UTC timestamp generated by the API for this response. The response does not include separate window-start or window-end fields.

Errors and rate limiting

The route uses the partner-portal limit: 120 requests per minute. A request carrying a dashboard session cookie is bucketed by that session; otherwise it is bucketed by client IP, including bearer-key-only requests. Back off until the fixed one-minute window resets after a 429.