Skip to main content

Logger - Logs Read

Endpoint

/o?method=logs

Overview

Returns request-log entries for one app from the logger capped collection, plus current logger state for that app.

Authentication

Countly API supports three authentication methods:

  1. API key query parameter: api_key=YOUR_API_KEY
  2. Auth token query parameter: auth_token=YOUR_AUTH_TOKEN
  3. Auth token header: countly-token: YOUR_AUTH_TOKEN

Permissions

Requires logger Read permission.

Request Parameters

ParameterTypeRequiredDescription
methodStringYesMust be logs.
api_keyStringConditionalRequired if auth_token is not provided.
auth_tokenStringConditionalRequired if api_key is not provided.
app_idStringConditionalRequired for non-global-admin users during read validation.
filterJSON String (Object)NoMongoDB query object applied to logs{appId}. Invalid JSON is ignored and treated as empty filter. Example: {"m":"POST","b":true}

Parameter Semantics

FieldExpected valuesBehavior
filterJSON object encoded as stringParsed with JSON.parse. If parsing fails, endpoint silently falls back to {} and returns unfiltered logs.

Configuration Impact

SettingDefaultAffectsUser-visible impact
logger.stateautomaticResponse fieldsReturned as state in successful responses (on, off, automatic).

Response

Success Response

{
"logs": [
{
"_id": "65f5e4a2e1de3a5f8d1419d9",
"ts": 1739968875321,
"reqts": 1739968875316,
"d": {
"id": "user-device-001",
"d": "iPhone",
"p": "iOS",
"pv": "17.2"
},
"l": {
"cc": "US",
"cty": "San Francisco"
},
"v": "24.3.0",
"t": {
"session": {
"begin_session": 1
},
"metrics": "{\"_app_version\":\"24.3.0\"}"
},
"q": "{\"app_key\":\"c959...\",\"device_id\":\"user-device-001\",\"begin_session\":1}",
"s": {
"version": "24.3.0",
"name": "countly-sdk-ios"
},
"h": {
"user-agent": "Countly SDK",
"countly-token": "",
"cookie": ""
},
"m": "POST",
"b": false,
"c": false,
"res": "{\"body\":{\"result\":\"Success\"}}",
"p": false
}
],
"state": "automatic"
}

Response Fields

FieldTypeDescription
logsArrayUp to 1000 matching request-log entries for the app.
logs[]._idStringMongoDB document ID for the log entry.
logs[].tsNumberRequest timestamp (ms).
logs[].reqtsNumberRequest-received timestamp (ms).
logs[].dObjectDevice details resolved for the request.
logs[].lObjectLocation details resolved for the request.
logs[].tObjectParsed request-type buckets (session/events/metrics/etc.).
logs[].qStringOriginal request query payload as serialized JSON.
logs[].hObjectRequest headers with token/cookie sanitized to empty strings.
logs[].mStringHTTP method used in request (GET, POST, ...).
logs[].bBooleantrue when request was processed as bulk.
logs[].cBooleantrue when request was canceled.
logs[].resStringSerialized response payload snapshot, when captured.
logs[].pArray or BooleanParsing/processing issues array, or false when none.
stateStringCurrent logger state: on, off, or automatic.

Error Responses

  • 400
{
"result": "Missing parameter \"api_key\" or \"auth_token\""
}
  • 400
{
"result": "Token not valid"
}
  • 401
{
"result": "No app_id provided"
}
  • 401
{
"result": "User does not exist"
}
  • 401
{
"result": "App does not exist"
}
  • 401
{
"result": "User does not have right"
}
  • 401
{
"result": "User is locked"
}
  • 401
{
"result": "Token is invalid"
}

Behavior/Processing

Behavior Modes

ModeTriggerProcessing PathResponse Shape
Filtered readfilter provided and JSON parse succeedsApplies parsed filter in find(filter), limits to 1000 docs.Raw object: { "logs": [...], "state": "..." }
Fallback readfilter missing or invalid JSONUses empty filter {} and returns latest matching logs up to limit.Raw object: { "logs": [...], "state": "..." }

Impact on Other Data

  • Read-only endpoint. It does not create, update, or delete documents.

Database Collections

CollectionUsed forData touched by this endpoint
countly.membersAuthentication and permission checksReads member account, lock state, and feature-level app permissions.
countly.appsApp validation/context loadingValidates app_id and loads app context for access checks.
countly.logs{appId}Request log retrievalReads request-log documents (ts, q, h, res, p, etc.).

Examples

Read latest logs (unfiltered)

/o?
method=logs&
api_key=YOUR_API_KEY&
app_id=6991c75b024cb89cdc04efd2

Read only bulk POST requests

/o?
method=logs&
api_key=YOUR_API_KEY&
app_id=6991c75b024cb89cdc04efd2&
filter={"m":"POST","b":true}

Operational Considerations

  • Response is hard-limited to 1000 documents per request.
  • Invalid filter JSON does not fail the request; it broadens the query to unfiltered logs.

Limitations

  • No server-side pagination is applied by this endpoint; only first 1000 matching logs are returned.
  • Because storage uses capped collections, older log records are automatically overwritten.

Last Updated

2026-02-17