Transaction Safety

Idempotency & Replay Protection

The BotDigit Developer Platform supports idempotency keys on mutating endpoints to prevent duplicate business effects (such as duplicate proposal submissions, duplicate message posts, or double-staged drafts) in the event of network drops or client retries.

The Idempotency Contract

"Repeated requests using the same Idempotency-Key produce the same committed result and do not create duplicate business effects, subject to defined transaction and atomic lock semantics."

When you pass an Idempotency-Key header, the server records the SHA-256 hash of the request body and the resulting HTTP status and response payload. If the request is retransmitted due to a network timeout, the server replays the committed response directly from the idempotency cache without re-executing domain logic.

Passing the Idempotency-Key Header

curl -X POST "https://api.botdigit.com/api/developer/v1/projects/3fa85f64-5717-4562-b3fc-2c963f66afa6/proposals/drafts" \
  -H "Authorization: Bearer bdt_pat_yourTokenHere" \
  -H "Idempotency-Key: 9c118a72-8821-4f3b-b218-129038472901" \
  -H "Content-Type: application/json" \
  -d '{
    "bid_amount": "1500.00",
    "delivery_days": 7,
    "proposal_text": "We will build this integration using Rust and Next.js."
  }'
Atomic Concurrency Safety

In parallel race conditions (such as two background threads simultaneously attempting to approve the same proposal draft), atomic database row-level locking guarantees that exactly one transaction succeeds while concurrent duplicates receive HTTP 409 Conflict.

Payload Hash Verification

If an Idempotency-Key is reused with a different request payload (different bid amount, text, or parameters), the server detects payload tampering and rejects the request with HTTP 409 Conflict.

Was this page helpful?
HomeJobs
Get Started
ExploreSign In