---
title: "Attach CI failure detail to the open incident"
method: POST
path: "/ci/{id}/detail"
tags: ["CI"]
---

# Attach CI failure detail to the open incident

`POST /ci/{id}/detail`

## Request

- Base URL: `https://app.lastping.dev`
- URL: `https://app.lastping.dev/ci/{id}/detail`
- Auth: none required

Stores a bounded (<=64 KB) failure log excerpt on the check's most recent
open incident.  Intended to be called from a CI workflow's if: failure()
step so the failure reason is visible inside LastPing without needing to
follow a link to the CI provider.

Authentication: present the check's CI secret in the X-LastPing-Token
header; it is compared in constant time.  No X-Api-Key header is required
or checked.  A request that does not authenticate is rate limited per
check (10 per 15 minutes) and falls back to the check UUID in the path as
a capability token — until enforcement is switched on, after which it is
rejected with 401.

Idempotency / race: if there is no open incident when this request arrives
the request is accepted as a no-op and 200 OK is returned.

Privacy: the detail body is never logged on the server side.

## Response `200`

Detail accepted.  Returns 200 OK whether or not an open incident
existed (no open incident = accepted no-op).

## Other responses

- `401`: The CI secret was missing or wrong, and enforcement is switched on.
- `404`: The id path segment is not a valid UUID, or no such check exists.
- `429`: Too many unauthenticated calls for this check (10 per 15 minutes). Authenticated calls are not counted against this window.

---

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