Skip to main content
POST
Cancel a booking

Authorizations

Authorization
string
header
default:sk_test_DEMO0000_replace_with_your_sandbox_key
required

API key authentication. Issued by the Safariat admin or via the partner portal. The secret is shown only once at generation.

Production sk_live_* keys must additionally sign every write request (POST/PUT/DELETE) with the X-Timestamp and X-Signature headers. Sandbox sk_test_* keys are exempt from request signing: X-Signature and X-Timestamp are not required for writes in the sandbox (so the developer-portal "Try it" playground works end to end). The Idempotency-Key header remains required on writes in both environments.

Headers

Idempotency-Key
string
required

Opaque, client-generated string unique per logical operation (a UUID v4 is recommended but any non-blank value up to 255 chars is accepted). Same key + same body = the cached response is returned with the Idempotent-Replayed: true header. Same key + different body = 409 Conflict. Retained for 24 h.

Maximum string length: 255
X-Timestamp
integer<int64>
required

Unix timestamp in seconds at the time the request is issued. Validity window ±5 minutes — beyond that the request is rejected. Required for production sk_live_* keys only; not required for sandbox sk_test_* keys.

X-Signature
string
required

hex(HMAC_SHA256(secret, "{X-Timestamp}\n{METHOD}\n{path}\n{body}")). The path includes the query string. The body is the exact JSON representation sent — any reformatting invalidates the signature. Required for production sk_live_* keys only; not required for sandbox sk_test_* keys.

Pattern: ^[a-f0-9]{64}$

Path Parameters

booking_number
string
required

Safariat booking number (format MV-XXXXXX). In the sandbox, create a booking first (POST /bookings) and use the returned number here.

Pattern: ^MV-[A-Z0-9]{6}$

Body

application/json
reason
enum<string>
required
Available options:
customer_request,
force_majeure,
supplier_cancellation,
fraud_suspicion,
other
note
string
Maximum string length: 1000

Response

Booking cancelled, refund amounts computed

booking_number
string
required
status
enum<string>
required
Available options:
CANCELLED
cancelled_at
string<date-time>
required
tier_applied
object
required

One refund tier of a cancellation grid, as published by the operator and frozen on the booking at confirmation. The same shape is returned by the rate pack, by the cancellation quote and by the cancellation itself.

refund
object
required