Creating posts
POST /v1/posts uses X-Request-Id for request replay protection. Kavenio
scopes the key to the authenticated subject and organization, hashes the
canonical request body, and keeps the completed result for five minutes.
- the same request ID and the same body return the same post; if publishing is still progressing, the response can contain the post’s newer state;
- the same request ID with a different body returns
VALIDATION_ERROR; - a matching request that is still in progress returns
CONFLICT; - keys are limited to 255 characters.
posts.create() call. When
your own retry wrapper may repeat a call, generate the ID once and pass the same
value to every attempt:
Other mutation endpoints
Some provider-backed mutation endpoints useIdempotency-Key instead. When an
endpoint requires that header, send a unique value for the first attempt and
reuse it for retries of the same request body. Do not reuse a completed key for
a different operation.
Provider publishing is a separate boundary
API request idempotency prevents duplicate Kavenio resources. It does not prove that every provider accepts an idempotency key for the final publish call. Kavenio uses provider-native publish idempotency where the adapter and provider support it. When a non-idempotent provider may have accepted a publish but the result is missing, Kavenio marks the targetaction_required instead of
blindly publishing it again. Inspect the target state and reconcile an unknown
provider outcome before retrying.