List activity logs
Unified logs endpoint. Returns logs for publishing, connections, webhooks, and messaging.
Filter by type, platform, status, and time range. Logs are retained for 90 days.
Legacy query aliases remain accepted: account_id for accountId, request_id for requestId,
status_code for statusCode, api_key_id for apiKeyId, and include_read_receipts for includeReadReceipts.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Query Parameters
Log category to query. Use all for the unified view across every category,
or api_request for your API request logs (method, path, status, latency).
"publishing"Value in
- "all"
- "publishing"
- "connections"
- "webhooks"
- "messaging"
- "workflow_event"
- "api_request"
Filter by status
Value in
- "success"
- "failed"
- "pending"
- "skipped"
- "all"
Filter by platform
Value in
- "tiktok"
- "instagram"
- "whatsapp"
- "facebook"
- "youtube"
- "linkedin"
- "twitter"
- "threads"
- "pinterest"
- "reddit"
- "bluesky"
- "googlebusiness"
- "telegram"
- "snapchat"
- "all"
Filter by action (e.g., post.published, message.sent, account.connected, webhook.delivered)
Free-text search across log fields
Number of days to look back (max 90)
1 <= value <= 9090Maximum number of logs to return (max 100)
1 <= value <= 10050Number of logs to skip (for pagination)
0 <= value0Filter by connected account ID
Filter webhook logs by event (e.g. post.published, message.received)
Correlation ID. Returns every log spawned by a single API request
Precise start instant (ISO 8601); narrows within the day range
date-timePrecise end instant (ISO 8601)
date-timeFilter by exact HTTP status code (api_request logs)
Filter by the API key that made the request (api_request logs)
Include message.read / message.delivered events (hidden by default for messaging logs)
falseResponse Body
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.logs.listLogs();console.log(data);{ "logs": [ { "type": "string", "action": "string", "user_id": "string", "platform": "string", "account_id": "string", "status": "success", "status_code": 0, "error_message": "string", "error_code": "string", "duration_ms": 0, "endpoint": "string", "request_body": "string", "response_body": "string", "created_at": "2019-08-24T14:15:22Z", "metadata": "string", "request_id": "string", "api_key_id": "string", "method": "string", "path": "string", "ip_address": "string", "user_agent": "string" } ], "pagination": { "total": 0, "limit": 0, "skip": 0, "pages": 0, "hasMore": true }}List API changelog entries
The API changelog, newest first. No API key needed; one address may make 120 requests a minute. Each entry is what the `api.changelog.published` webhook delivered: the announcement in `message`, and in `changes` the deterministic diff of the OpenAPI spec (operations and schemas added, removed and modified) for automation to act on. Page with `before` set to the previous page's `nextCursor`.
Account billing snapshot (plan, cycle, balance, caps, status)
The billing "wallet/statement" view: current plan, billing cycle, accrued balance + remaining credits this period, spend caps, and payment / access status. This is the billing half of the legacy `/v1/usage-stats` snapshot. The per-product consumption half is metering and lives on `GET /v1/usage`. Accounts on usage-based billing get a populated `balance`; legacy Stripe accounts get `balance: null` plus a deprecated `legacy.limits` block and, when payment-blocked, `status.openInvoiceUrl` / `status.declineReason`.