Idempotencia & solicitudes condicionales

Idempotency-Key: reintenta una escritura sin hacerla dos veces

Envía una cabecera Idempotency-Key (cualquier cadena de hasta 200 caracteres; un UUID sirve) en cualquier POST, PUT, PATCH o DELETE. Durante 24 horas, la misma clave con la misma solicitud repite la respuesta original, marcada con Idempotent-Replay: true, sin actuar de nuevo. La misma clave con un cuerpo distinto se rechaza con 409 idempotency_key_reuse, que es justo el error que existe para detectar. Las claves están acotadas a tu clave de API. Las respuestas 401, 429 y 5xx nunca se almacenan: describen el momento, no la solicitud.

la misma llamada dos veces — la segunda es gratis
curl -X POST https://api.xsignalfeed.com/v1/keywords \
  -H "Authorization: Bearer xsf_your_key" -H "Idempotency-Key: 6f1c0c8e-add-solana" \
  -H "Content-Type: application/json" -d '{"query": "$SOL -filter:retweets"}'
# 201 the first time; the retry returns the same 201 body with Idempotent-Replay: true

Algunas escrituras son idempotentes por construcción y no necesitan la cabecera: suscribirse a una cuenta que ya monitorizas no hace nada y responde 200; el DELETE de algo que no tienes no hace nada; fijar el webhook en la URL que ya tiene conserva el secreto existente.

ETag e If-None-Match

Cada GET JSON lleva un ETag débil. Devuélvelo como If-None-Match y un recurso sin cambios responde 304 sin cuerpo: barato de comprobar repetidamente.