Logs
Developer Logs give every workspace an observability surface for API, publishing, OAuth, webhook, and worker activity. Query them over REST, backfill with cursor pagination, or stream them in near real time over SSE.
GETList logs
/v1/logsCursor-paginated search and backfill across retained logs.GETGet log/v1/logs/{id}Fetch one log, including redacted request and response payloads.GETStream logs/v1/logs/streamServer-Sent Events stream for near real-time ingestion, with replay.Scope and isolation
- Logs are always scoped to the workspace that owns the API key or dashboard session. The normal logs API never accepts a
workspace_idparameter. - Requesting a log that belongs to another workspace returns
404 NOT_FOUND. - Admin logs are a separate, super-admin-only surface and are never available through these endpoints.
Hosted Connect outcomes
Every Hosted Connect attempt that UniPost can associate with your workspace produces one result event. Filter with
category=oauth, then use the action and status to distinguish the outcome.account.connect.callback_succeeded— the account was connected.account.connect.callback_failed— the attempt failed and includes a safeerror_code.account.connect.callback_cancelled— the user cancelled provider authorization.- Search for the complete
metadata.connect_session_idormetadata.external_user_idvalue withq. These ID fields use exact matching.
Facebook Page failures use
facebook_page_not_available, facebook_page_permission_required, or facebook_authorization_failed. These codes and messages are bounded UniPost results, not raw Meta responses.Redaction and payloads
- The list endpoint never returns raw payloads. The detail endpoint includes redacted
request_payloadandresponse_payload. - Redaction runs before logs are persisted. Any object key whose lowercased name contains
token,secret,authorization,cookie,password,refresh_token,access_token, orclient_secretis replaced with[REDACTED]. - Payloads are truncated to keep log rows bounded.
- Use the
request_idfield to correlate API responses with their logs.
Retention by plan
Backfill returns every log still retained for your workspace, not all logs ever created. Retention depends on plan:
Plan
Retention
free1 dayapi7 daysbasic14 daysgrowth30 daysteam90 daysenterprise180 daysChoosing an access pattern
Use REST list with
cursor for polling and backfill. Use the SSE stream for near real-time ingestion. Keep using webhooks for post and account lifecycle events.