---
title: "Ingest a batch of trusted server request events"
method: POST
path: "/api/ingest"
tags: ["Collection"]
---

# Ingest a batch of trusted server request events

`POST /api/ingest`

## Request

- Base URL: `https://slimlytics.com`
- URL: `https://slimlytics.com/api/ingest`
- Auth: API key in header `X-Slimlytics-Server-Key`

Uses a separate rotatable site secret. Raw client IP values are transformed for rotating identity and optional GeoIP, then discarded. Stable per-event idempotency keys make log retries safe.

## Request body

- object
  - `events` object[], required
    - `idempotencyKey` string
    - `url` string, uri, required
    - `userAgent` string, required
    - `clientIp` string, required
    - `occurredAt` string, date-time
    - `referrer` string, uri
    - `method` 'GET' | 'HEAD'
    - `status` integer
    - `eventName` string

## Response `202`

Batch processed

- object
  - `accepted` integer
  - `duplicates` integer

## Other responses

- `400`: Invalid request
- `404`: Site or resource not found
- `429`: Rate limited
- `500`: Internal service error

---

[API](https://skmtc.dev/slimlytics/apis/slimlytics-api.md) · [All operations](https://skmtc.dev/slimlytics/apis/slimlytics-api/llms.txt) · [OpenAPI document](https://skmtc.dev/slimlytics/apis/slimlytics-api/revisions/f9a26641a254?raw)
