Skip to content

Conventions

Conventions

Shared conventions across Tasks and Lumen APIs.

Base URLs

Tasks API
https://api.projecthollow.com
Lumen API
https://projecthollow.com/monitoring/ingest

Request & Response Formatting

All endpoints accept and return JSON payloads. Include Content-Type: application/json on all requests carrying a body.

Idempotency Guarantees

Supply an Idempotency-Key header or an idempotencyKey field in the request body to prevent duplicate processing. Re-submitting a request with an existing idempotency key returns the original record with {"duplicate": true}.

Error Standard

All error responses adhere to a standard error structure:

{ "error": { "code": "RATE_LIMITED", "status": 429, "message": "Rate limit exceeded" } }
400
MISSING_TEXT, MISSING_FIELD, MISSING_ENTRIES, MISSING_POINTS, INVALID_FIELD, INVALID_REQUEST, TOO_MANY_ENTRIES, TOO_MANY_POINTS
401
MISSING_AUTH_HEADER, INVALID_KEY_FORMAT, INVALID_KEY, KEY_REVOKED
403
ACCOUNT_NOT_APPROVED, FORBIDDEN
404
NOT_FOUND: target endpoint or record does not exist.
409
CONFLICT: concurrent calls shared an idempotency key before execution finished.
413
PAYLOAD_TOO_LARGE: request body exceeds maximum 256 KiB size limit.
429
RATE_LIMITED or QUOTA_EXCEEDED.

Rate Limits & Daily Quotas

Tasks API
120 requests per minute per key, up to 2,000 tasks per day per key.
Lumen API
600 requests per minute per key, up to 100,000 ingested events per day per key (logs and metrics combined).