Skip to main content

Ingest Logs

Send logs to Recall via the API.

Single Log

POST /api/v1/log

Request

curl https://recall.brainzlab.ai/api/v1/log \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "level": "info",
    "message": "User signed up",
    "data": {
      "user_id": 123,
      "plan": "pro"
    }
  }'

Parameters

FieldTypeRequiredDescription
levelstringYesLog level: debug, info, warn, error, fatal
messagestringYesLog message
dataobjectNoStructured data
timestampstringNoISO8601 timestamp (default: now)
contextobjectNoContext metadata
tagsobjectNoIndexed tags

Response

{
  "data": {
    "id": "log_abc123",
    "level": "info",
    "message": "User signed up",
    "timestamp": "2024-01-15T10:30:00Z"
  }
}

Bulk Ingest

Send multiple logs in one request:
POST /api/v1/logs

Request

curl https://recall.brainzlab.ai/api/v1/logs \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "logs": [
      {
        "level": "info",
        "message": "First log",
        "data": { "key": "value1" }
      },
      {
        "level": "info",
        "message": "Second log",
        "data": { "key": "value2" }
      }
    ]
  }'

Response

{
  "data": {
    "accepted": 2,
    "rejected": 0
  }
}

Context Fields

Include request and user context:
{
  "level": "info",
  "message": "Order placed",
  "data": {
    "order_id": 456
  },
  "context": {
    "request_id": "req_abc123",
    "session_id": "sess_xyz789",
    "user": {
      "id": 123,
      "email": "[email protected]"
    },
    "environment": "production",
    "service": "api",
    "commit": "abc123",
    "host": "web-1"
  }
}

Tags

Tags are indexed for fast filtering:
{
  "level": "info",
  "message": "Feature used",
  "tags": {
    "feature": "checkout",
    "experiment": "new_flow",
    "version": "v2"
  }
}
Query by tag:
tag.feature:checkout

Rate Limits

  • Single log: Standard rate limit
  • Bulk: 10 requests/minute, up to 1000 logs per request

Errors

CodeDescription
invalid_levelLevel must be debug/info/warn/error/fatal
message_too_longMessage exceeds 10KB
data_too_largeData object exceeds 100KB
bulk_too_largeBulk request exceeds 1000 logs