Everything an integrator at an industrial robotics operator needs to ship one signed envelope
into the live KAIOS fleet. Bearer-authenticated ingest, plaintext JSON, persisted to
kaios_telemetry and reflected on the /kaios
live status panel within one render.
An issuer signs the exact payload_string bytes and sends the envelope to the verifier.
The signed claims are portable; the issuer's raw source records and signing key stay private.
{
"signature": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"payload_string": "{\"ciphertext_bundle\":\"opaque:issuer-private-envelope-v1\",\"disclosed_fields\":{\"loan_size_usd\":75000,\"task\":\"undercollateralized-lending\"},\"issued_at\":\"2026-07-24T12:00:00Z\",\"issuer\":\"kaios.automa8.ai\"}",
"payload": {
"issuer": "kaios.automa8.ai",
"issued_at": "2026-07-24T12:00:00Z",
"disclosed_fields": {
"task": "undercollateralized-lending",
"loan_size_usd": 75000
},
"ciphertext_bundle": "opaque:issuer-private-envelope-v1"
}
}
signature above is an illustrative issuer-generated placeholder, not a production credential.
The payload_string is compact canonical JSON: object keys are recursively sorted alphabetically,
including the nested disclosed_fields object, before the issuer signs its UTF-8 bytes.
The issuer chooses the claims to disclose and places them in disclosed_fields.
It recursively sorts object keys and emits compact JSON as the exact payload_string.
The issuer signs the UTF-8 bytes of that string with Ed25519 using its private key.
The verifier checks those bytes against KAIOS_ISSUER_PUBLIC_KEY, then returns valid, issuer metadata, and disclosed_fields.
ciphertext_bundle; it does not decrypt or persist that bundle. A valid signature authenticates issuer-signed claims, not a separate business-trust decision.
/api/kaios/ingestPlaintext JSON. One envelope per agent, per submission. Persisted to the kaios_telemetry table and overlaid on the live agent panel.
Every request must present a partner-issued Bearer token. The token is per-partner and is supplied
server-side via the KAIOS_INGEST_TOKEN environment variable. When that env var is unset
on the server, the endpoint returns 503 with
{"ok": false, "error": "Ingestion disabled"}. When set, any request with a missing,
malformed, or mismatched token returns 401.
Authorization: Bearer <KAIOS_INGEST_TOKEN>
All four fields are required. Any missing or invalid field produces a 400 with the offending fields listed in errors.
| Field | Type | Description |
|---|---|---|
| agent_id | string | Stable unique identifier for the deploying agent (e.g. "agent-7c3a"). |
| status_code | integer | Partner-side numeric health/status code (0 = healthy). |
| uptime_seconds | integer | Partner-reported uptime since last restart, in seconds (>= 0). |
| last_seen_at | string | ISO-8601 timestamp of the agent reading. |
The values below come straight from the live contract — what the integrator sends and what the server stores.
{
"agent_id": "agent-7c3a",
"status_code": 0,
"uptime_seconds": 43200,
"last_seen_at": "2026-07-24T12:00:00Z"
}
One command — sends the example envelope above to the live ingest endpoint with a Bearer token. The host is whatever the request landed on; the path is the same everywhere.
curl -X POST https://automa-labs-ai.polsia.app/api/kaios/ingest \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <KAIOS_INGEST_TOKEN>" \
-d '{
"agent_id": "agent-7c3a",
"status_code": 0,
"uptime_seconds": 43200,
"last_seen_at": "2026-07-24T12:00:00Z"
}'
<KAIOS_INGEST_TOKEN> with the token your KAIOS partner liaison gave you. The example body values map 1:1 to the request-schema table above — change agent_id to your deploying agent's stable identifier.
Every terminal status the integrator needs to handle.
| Status | Body | When |
|---|---|---|
| 202 | {"ok":true,"accepted_at":"ISO-8601 string","replay_id":"string","id":"integer"} |
Envelope accepted and persisted to kaios_telemetry. |
| 400 | {"ok":false,"errors":["string"]} |
Validation error — one or more required fields are missing or wrong type. |
| 401 | {"ok":false,"error":"Unauthorized"} |
Authorization header missing, malformed, or token did not match. |
| 503 | {"ok":false,"error":"Ingestion disabled: KAIOS_INGEST_TOKEN not configured"} |
Server-side ingestion disabled: KAIOS_INGEST_TOKEN env var is not set. |
Every accepted envelope is written to the kaios_telemetry table and overlaid on the
live status panel at /kaios on the next render.
The same contract — including the example envelope and the response shapes — is published as
plain JSON at https://automa-labs-ai.polsia.app/api/kaios/ingest, so a
partner agent can pull the spec straight off the live endpoint rather than caching this page.