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 and any authorized, retained failure detail.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.
IDs and pagination
- Current REST and SDK responses return a positive integer log ID. Pass that numeric value back unchanged when fetching one log.
- List results use a stable global order, newest first. Pass the opaque cursor from
meta.next_cursorback unchanged; its internal tie-breakers and storage layout are intentionally not part of the API contract.
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 is metadata-only and never returns raw payloads.
- Canonical API request events retain bounded, redacted detail only for failed requests. Successful request events remain metadata-only.
- If retained failure detail expires, the base log remains available and the detail endpoint returns
detail_status=expiredwithout payload fields. - Other integration log types keep their existing source-specific detail behavior.
- 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.