---
title: "Ingest app host CPU and egress counters (ADR 0076 contract §5)"
method: POST
path: "/internal/app-host/usage/ingest"
---

# Ingest app host CPU and egress counters (ADR 0076 contract §5)

`POST /internal/app-host/usage/ingest`

## Request

- Base URL: `https://api.eurobase.dev`
- URL: `https://api.eurobase.dev/internal/app-host/usage/ingest`
- Auth: none declared

Bearer: an app-host-usage producer token verified before the body is read. Active or draining members may submit up to 500 records. Exact replays are acknowledged once; different values for a stored key are quarantined. The host retains WAL records until a 200 disposition.

## Request body

- AppHostUsageBatchV1
  - `schemaVersion` 'app-host-usage.v1', required
  - `hostId` string, required
  - `bootId` string, uuid, required
  - `records` unknown[], required: Every element receives a disposition; malformed records receive rejected record_invalid.
    - unknown

## Response `200`

Per-record accepted, duplicate or rejected dispositions

- AppHostUsageResults: Results correspond to input records by array position. Invalid shapes may have null invocationId or seq.
  - `results` object[], required
    - `invocationId` string, nullable, required
    - `seq` integer, nullable, required
    - `disposition` 'accepted' | 'duplicate' | 'rejected', required
    - `reason` 'record_invalid' | 'conflict' | 'route_unknown' | 'route_binding_mismatch' | 'invocation_inconsistent' | 'after_final' | 'counter_regressed' | 'cpu_bound_exceeded' | 'outside_acceptance_window'

## Other responses

- `400`: Invalid batch envelope (app-host-usage-batch-invalid)
- `401`: Producer token invalid (app-host-producer-token-invalid)
- `403`: Batch names another host or boot (app-host-producer-scope-mismatch), or the host is not an active or draining member (app-host-not-member)
- `503`: Ingest secret is not configured (app-host-ingest-unconfigured), or boot facts have not arrived (boot-facts-unknown); retry after Retry-After

---

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