Smoke
Smoke Poll
Resolve idempotency_key → instance_id once the worker inserts the row. Same shape as /api/v1/instances/by-key/{idem} but scoped to the smoke customer.
Path Parameters
Header Parameters
Response Body
curl -X GET "https://loading/internal/v1/smoke/instances/by-key/string" \ -H "authorization: string"{
"found": true,
"instance_id": "string",
"status": "string"
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Smoke Status
Path Parameters
uuidHeader Parameters
Response Body
curl -X GET "https://loading/internal/v1/smoke/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "authorization: string"{
"hostname": "string",
"id": "string",
"status": "string"
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Smoke Delete
Soft-delete + provider cleanup for a smoke instance. Mirrors the cleanup recipe in /api/v1/instances DELETE — same child-row deletes, same hostname suffix, same Hetzner cleanup task.
Path Parameters
uuidHeader Parameters
Response Body
curl -X DELETE "https://loading/internal/v1/smoke/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "authorization: string"{
"instance_id": "string",
"status": "string"
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Smoke Chat
One chat turn, SSE streamed from the agent VPS.
Strips the customer-facing chat endpoint's Redis stream lock, rate limiter, and renewal loop — single-consumer CI does not need those, and the smoke fixture is the only customer that can drive this endpoint anyway.
Path Parameters
uuidHeader Parameters
length <= 4000Response Body
curl -X POST "https://loading/internal/v1/smoke/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/chat" \ -H "authorization: string" \ -H "Content-Type: application/json" \ -d '{ "message": "string" }'null{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Smoke Llm Events
Count llm_usage_events rows for a smoke instance within a recent window. Reads the authoritative table directly so a fresh chat turn's row is visible immediately (the usage_daily rollup customer-facing endpoint hits is too stale for smoke).
Path Parameters
uuidQuery Parameters
900Header Parameters
Response Body
curl -X GET "https://loading/internal/v1/smoke/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/llm-events?window_seconds=900" \ -H "authorization: string"{
"count": 0,
"instance_id": "string",
"providers": [
"string"
],
"window_seconds": 0
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Smoke Provision
Provision a smoke instance via the same Celery task the customer endpoint uses. Customer / tenant / subscription IDs come from settings — the request body cannot override them, so a leaked OPS_BEARER_TOKEN can't be used to create instances under any other customer.
Header Parameters
length <= 255length <= 100length <= 80length <= 80Response Body
curl -X POST "https://loading/internal/v1/smoke/provision" \ -H "authorization: string" \ -H "Content-Type: application/json" \ -d '{ "idempotency_key": "string", "manifest_id": "string", "region_id": "string", "tier_id": "string" }'{
"idempotency_key": "string",
"instance_id": "string",
"task_id": "string"
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}