Skip to main content
Back to API docs

Publishing analytics API

Publishing Analytics with the Wahdx Connection API

Publishing analytics give content teams and integrations an accurate view of publishing volume across TikTok, Instagram, Threads, and Facebook. The endpoint returns aggregates computed server-side: request counts per platform, provider-item attempt counts, provider-accepted counts, final published counts, failed counts, and skipped counts. Responses are complete and never truncated to a fixed number of raw rows.

Endpoint and authentication

Authenticate with X-API-Key (server-side only) or a Bearer session. The endpoint is available when the publishing ledger is enabled on the backend; otherwise it returns 404 so existing clients are unaffected.

GET /api/analytics/publishing?from=2026-08-01T00:00:00Z&to=2026-08-04T00:00:00Z

Response shape

Both requests and attempts return rows plus a truncated flag. Aggregates are computed in PostgreSQL, so the payload stays small regardless of publishing volume.

  • requests.rows: source (scheduled_post or direct_api), platform, request_count.
  • attempts.rows: platform, attempt_count, provider_accepted_count, published_count, failed_count, skipped_count.
  • truncated is always false for aggregate responses.
  • request_count is the number of unique requests targeting a platform; attempt_count is the number of account/item provider attempts.

FAQ

Common questions about this API topic.

Why do request_count and attempt_count differ?

One publishing request can fan out to several accounts and thread items. Request counts answer "how many requests targeted Instagram?", while attempt counts answer "how many account/item attempts were processed?".

Is publishing analytics available in every mode?

The endpoint is enabled when the publishing ledger mode is enabled. In shadow or off mode it returns 404, and publishing behavior is unchanged.

Does analytics change existing publishing responses?

No. The ledger is internal persistence and analytics. Existing publish, status, and scheduled post responses keep their current contract.