On this page

Partner Reporting API Guide

REST API · Version 1.0

Retrieve daily impression and spend data for reconciliation. One endpoint supports both SSP supply partners and DSP demand partners, with every response automatically scoped and reconciliation-adjusted by the identity associated with the API key.

JSON UTC reporting SSP & DSP API key authentication

1. Overview

The DigiBid Partner Reporting API provides daily delivery totals for customers integrating with DigiBid as an SSP or DSP. The authenticated credential determines the partner type and customer account; callers cannot query another customer's data by supplying an ID.

SSP Supply reporting

For supply partners connected to the DigiBid ADX. Returns impressions and publisher spend for the authenticated publisher account.

DSP Demand reporting

For demand partners buying traffic through DigiBid. Returns campaign impressions and demand spend for the authenticated DSP account.

Reporting timezone: UTC. Both from and to are inclusive. The maximum date range is 31 days.
Breaking change: data[].spend changes from a quoted decimal string to a JSON number on the existing endpoint. Update typed decoders before this release is deployed. No dual-format response is provided.

2. Endpoint

Production report

GET https://api.digibid.com/partner/v1/report

Requires an X-API-Key header.

Health check

GET https://api.digibid.com/partner/v1/healthz

No authentication. Returns 200 OK with an empty body and confirms only that the API process is reachable.

HTTPS is required. An API key is a bearer credential. Never send it over plaintext HTTP or place it in a URL, application log, analytics event, support ticket, or client-side application.

3. Quick Start

Load the credential supplied by DigiBid into DIGIBID_API_KEY using your environment's secret-safe mechanism. The same request format is used for SSP and DSP credentials.

curlprintf 'header = "X-API-Key: %s"\n' "$DIGIBID_API_KEY" | \
curl --config - --fail-with-body \
  --request GET \
  --header 'Accept: application/json' \
  'https://api.digibid.com/partner/v1/report?from=2026-08-01&to=2026-08-04'

The API key is supplied to curl through standard input instead of being expanded into the process argument list.

A successful request returns 200 OK. When no matching data exists, the request is still successful and data is an empty array.

4. Authentication

Pass the API key in the X-API-Key HTTP request header. DigiBid validates the key, checks that it is active and unexpired, and resolves it to one customer identity. A server-managed reconcile_ratio may also be attached to the token; clients cannot set or override it.

Authentication request headers
HeaderStatusDescription
X-API-KeyRequiredPartner credential issued by DigiBid. It determines the account and whether the response uses SSP or DSP reporting semantics.
AcceptRecommendedUse application/json.

Do not send customer_id, publisher_id, dsp_id, or partner_type. These values are derived from the credential and cannot be overridden by request parameters.

If a key is exposed, stop using it and contact DigiBid immediately for revocation and replacement. During an approved rotation, old and new keys may overlap briefly.

5. Query Parameters

Report query parameters
ParameterTypeStatusDescription
fromdateRequiredInclusive start date in YYYY-MM-DD format, interpreted in UTC.
todateRequiredInclusive end date in YYYY-MM-DD format, interpreted in UTC. Must not precede from.
  • The date range may not exceed 31 days.
  • Use ISO calendar dates only; timestamps and timezone offsets are not accepted.
  • Rows are grouped by UTC date and currency.

6. SSP & DSP Metrics

The response schema is identical for both partner types. The credential changes the account scope and business meaning of the metrics.

SSP and DSP metric semantics
Partner typeAccount scopeImpressionsSpend
SSPAuthenticated publisher accountReconciliation-adjusted SSP ad impressionsReconciliation-adjusted publisher spend
DSPAuthenticated DSP accountReconciliation-adjusted DSP campaign impressionsReconciliation-adjusted campaign spend
Reconciliation adjustment: every raw metric is multiplied by 1 + reconcile_ratio from the API token. For example, -0.05 returns 95% of raw impressions and spend. When a non-zero ratio is applied, impressions are rounded to the nearest integer (half away from zero); spend is rounded to six decimal places and returned as a JSON number. A missing ratio is treated as zero. Ratio changes take effect immediately and apply to historical dates queried afterward. For deterministic reconciliation, round both sides to six decimal places before comparing spend.

7. Response Fields

200 OK · SSP example{
  "data": [
    {
      "date": "2026-08-01",
      "currency": "USD",
      "impressions": 54504,
      "spend": 114.992499
    }
  ],
  "meta": {
    "from": "2026-08-01",
    "to": "2026-08-04",
    "timezone": "UTC",
    "partner_type": "ssp"
  }
}
Successful response fields
FieldTypeDescription
dataarrayDaily reporting rows. Empty when no matching data exists.
data[].datestringUTC reporting date in YYYY-MM-DD format.
data[].currencystringISO 4217 currency code, such as USD.
data[].impressionsintegerReconciliation-adjusted impression count for the authenticated account, rounded to the nearest integer.
data[].spendnumberReconciliation-adjusted spend in major currency units, rounded to six decimals and encoded as a JSON number.
meta.fromstringRequested inclusive start date.
meta.tostringRequested inclusive end date.
meta.timezonestringAlways UTC.
meta.partner_typestringssp or dsp, as resolved from the API key.

If one date contains multiple currencies, the API returns one row per currency and never combines different currencies into one total.

8. Examples

Request with URL-encoded parameters

curlprintf 'header = "X-API-Key: %s"\n' "$DIGIBID_API_KEY" | \
curl --config - --fail-with-body --get \
  'https://api.digibid.com/partner/v1/report' \
  --header 'Accept: application/json' \
  --data-urlencode 'from=2026-08-01' \
  --data-urlencode 'to=2026-08-04'

Empty result

200 OK{
  "data": [],
  "meta": {
    "from": "2026-07-01",
    "to": "2026-07-01",
    "timezone": "UTC",
    "partner_type": "dsp"
  }
}

9. Error Handling

Error responses use a consistent JSON envelope:

Error response{
  "error": {
    "code": "invalid_date_range",
    "message": "..."
  }
}
HTTP statuses and API error codes
HTTP statusError codeMeaningRecommended action
200Successful request; data may be emptyProcess the response normally.
400invalid_date_range
date_range_too_large
Missing, malformed, reversed, or oversized date rangeCorrect the request before retrying.
401unauthorizedMissing, invalid, inactive, or expired API keyCheck the credential. Do not retry indefinitely.
429rate_limitedRate or concurrency limit exceededWait for Retry-After, then retry with exponential backoff and jitter.
503backend_unavailableAuthentication or reporting data is temporarily unavailableRetry with exponential backoff. Contact DigiBid if the failure persists.

Clients should primarily branch on the HTTP status. Additional machine-readable error codes may be introduced while preserving the response envelope.

Every response includes X-Request-Id. For support, provide this ID, the UTC request time, and the requested date range—but never the API key.

10. Rate Limits

The service applies request-rate and concurrency controls to protect reporting availability. Limits are associated with the authenticated partner credential; contact your DigiBid account manager for the limits assigned to your integration.

  • Treat 429 Too Many Requests as a transient response.
  • Honor the Retry-After response header before sending another request.
  • Use exponential backoff with random jitter and cap the maximum retry interval.
  • Do not run parallel requests for overlapping date ranges unless explicitly required.

11. Integration Best Practices

  1. Pull incrementally: retrieve one UTC day at a time for predictable retries and reconciliation.
  2. Refresh recent data: reload the current and previous UTC day because delayed events may update totals.
  3. Handle floating point: parse spend as a double/float64, reconcile each currency independently, and round both values to six decimal places before comparing them.
  4. Make ingestion idempotent: replace or upsert rows using date, currency, account, and partner type as the logical key.
  5. Protect credentials: keep keys in a server-side secret manager, restrict access, rotate them, and redact them from logs.
  6. Track requests: retain X-Request-Id with job metadata for troubleshooting.
This API is intended for delivery reconciliation. If a signed commercial settlement or billing agreement defines different finalization rules, that agreement takes precedence.

12. FAQ

Can I query a different customer ID?

No. Customer scope and partner type are derived exclusively from the API key.

Why did a successful request return no rows?

No matching finalized events were found for the credential and date range. This is represented by 200 OK with an empty data array.

What numeric type should I use for spend?

spend is a JSON number. Decode it as a double or Go float64; trailing zeros are not part of the API contract. Round both sides to six decimal places for reconciliation.

Can totals change after I retrieve them?

Yes. Delayed events can update recent UTC dates. Refresh at least the current and previous day.

What should I send to support?

Send the X-Request-Id, UTC request time, requested date range, HTTP status, and error code. Never send your API key.