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.
API key authentication - use your Zernio API key as a Bearer token
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""all" | "publishing" | "connections" | "webhooks" | "messaging" | "workflow_event" | "api_request"Filter by status
"success" | "failed" | "pending" | "skipped" | "all"Filter by platform
"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)
901 <= value <= 90Maximum number of logs to return (max 100)
501 <= value <= 100Number of logs to skip (for pagination)
00 <= valueFilter 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
}
}{
"error": "Unauthorized"
}Send test webhook POST
Send a test webhook to verify your endpoint is configured correctly. The test payload includes event: "webhook.test" to distinguish it from real events.
Account billing snapshot (plan, cycle, balance, caps, status) GET
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`. Usage-based (Metronome) accounts get a populated `balance`; legacy Stripe accounts get `balance: null` plus a deprecated `legacy.limits` block and, when payment-blocked, `status.openInvoiceUrl` / `status.declineReason`.