Create
Create a new payout.
Initiates a withdrawal to the specified destination address. The
payout enters queued status and executes asynchronously.
Idempotency: Idempotency-Key is required, and exact request
replays are idempotent — they return the original payout without
moving funds twice.
The conflict check covers the complete request: path parameters,
query and the canonical body. Reusing a key
with a different value for ANY field, annotations such as
description and metadata included, returns 409 with code
conflict. Retry the original request — see Idempotency-Key.
Native gate amounts stay separate from the payout amount, and an accepted
funding intent is immutable: a merchant with an active funding grant may
pass funding to override its policy within that grant.
Usage notes#
Initiates a withdrawal to the specified destination address. The payout enters queued status and executes asynchronously.
Idempotency-Key is required, and an exact request replay is idempotent: it returns the original payout without moving funds twice. The conflict check covers the complete request, annotations such as description and metadata included; reusing a key with a different value for any field returns 409 conflict. Retry the original request — see idempotency.
Requires payouts:write. Use a recipient-confirmed destination and destination_tag where required. Example addresses are placeholders; do not send real funds to them.
A successful response accepts the payout for execution and reserves what funds it. amount is the requested principal, recipient_amount is sent to the recipient, target_funding_amount is the target-denominated obligation, and balance_movements carries the effect on every participating currency and network. There is no scalar merchant debit. Actual network_fee is separate from the commercial network charge and is never added to the target obligation.
Omit funding to use the saved merchant policy. An explicit source override must stay within the current grant. Preserve the original body and idempotency key after an unknown outcome. See funding semantics.
There is no external_id field; use metadata, which is returned on the payout. Save your local withdrawal mapping and payout ID before relying on notifications. See payout lifecycle and amounts.
/v1/payoutscurl --request POST 'https://api.thehalfin.com/v1/payouts' \
--header "X-API-Key: $HALFIN_API_KEY" \
--header 'Idempotency-Key: createPayout-example-1001' \
--header 'Content-Type: application/json' \
--data '{
"currency": "USDC",
"network": "ethereum",
"amount": "10.00",
"destination": "0x0000000000000000000000000000000000000001",
"beneficiary_type": "third_party",
"description": "Withdrawal 1001",
"metadata": {
"withdrawal_id": "1001"
}
}'Authorization
X-API-KeystringRequiredAPI key issued by the merchant dashboard. The key's environment (live/test) determines which data the caller can access. Permissions on the key control which endpoints are reachable.Example:
$HALFIN_API_KEY
Header Parameters
Idempotency-KeystringRequiredPersist a unique key before sending this operation. Retry an uncertain outcome with the same key and unchanged request; a new operation needs a new key.
See idempotency and retries for replay, conflict, and key-release behavior.
Full header contract
Required for merchant POST requests that create invoices, addresses, payouts, or refunds. Use a unique key for each intended operation. The same key namespace is shared by all merchant operations within the same merchant and environment. Retry the original request with the same key and unchanged path, query, and body. JSON key ordering and insignificant whitespace are ignored; numeric literals and string values are preserved ("10" differs from "10.00"). Changing any field under a bound key returns 409 conflict. An executing request returns 409 in_flight. An exact retry returns the permanent original outcome with Idempotent-Replayed: true. Only Idempotency-Key-Released: true confirms that a refused attempt released the key. An unconfirmed release returns 503 service_unavailable without that header. Under uncertainty, retry the original request with the same key. The key is never echoed in response bodies. Keys contain 1–255 printable ASCII characters without spaces; a UUID is recommended.
- Minimum length: 1
- Maximum length: 255
- Pattern: ^[\x21-\x7E]+$
Example:
createPayout-example-1001
Request Body
Required
application/json
currencystringRequiredCryptocurrency code.- Minimum length: 1
- Maximum length: 20
Example:
stringnetworkstringRequiredBlockchain network of the payout asset (e.g. ethereum, solana, tron). Required together with currency; an unknown pair returns 422 gate_unknown.- Minimum length: 1
- Maximum length: 64
Example:
stringamountstringRequiredDecimal string amount to send.- Maximum length: 50
Example:
1destinationstringRequiredDestination blockchain address. The owning rail decides whether the address is usable on this network; an address the rail refuses is answered `422` with code `unprocessable_entity`, not `400` — the string is well formed and the network is what rejects it.- Maximum length: 256
Example:
stringdestination_tagstringOptionalMemo/tag for chains that require it.- Maximum length: 256
Example:
stringbeneficiary_type"self" | "third_party"RequiredWho receives the funds, declared by the merchant on every payout. `self` — the merchant's own wallet or its own account at an exchange; `third_party` — a wallet that belongs to someone else (a customer, a partner, a payroll recipient). Required on creation, no default. The platform stores the declared value and returns it on the payout; it does not change how the payout executes. Travel Rule handling branches on this axis, so the declaration must be truthful.Example:
selfdescriptionstringOptionalHuman-readable payout description.- Maximum length: 1000
Example:
stringmetadataobjectOptionalMerchant key-value metadata; omitted invoice metadata is stored and returned as an empty object.- Maximum properties: 50
Example:
{"key":"string"}[key]stringOptional- Maximum length: 500
Example:
string
fundingobjectOptionalOptional request override within the current merchant grant. Omitted uses the current merchant policy; accepted requests freeze their funding intent.- Unknown properties are rejected
Example:
{"mode":"same_asset_only","source":null,"service_class":"immediate","max_wait_seconds":0}mode"same_asset_only" | "source_only" | "target_first"RequiredExample:
same_asset_onlysourceobject | nullRequired- Unknown properties are rejected
Example:
nullcurrencystringRequired- Minimum length: 1
- Maximum length: 20
Example:
stringnetworkstringRequired- Minimum length: 1
- Maximum length: 64
Example:
string
service_class"immediate" | "waiting"RequiredExample:
immediatemax_wait_secondsintegerRequired- Minimum: 0
- Maximum: 2147483647
Example:
0
Response Body
201 The payout.
Idempotent-Replayed"true"OptionalPresent and true when returning the stored outcome of an earlier execution.Example:
trueIdempotency-Key-Released"true"OptionalPresent and true after a proven no-effect refusal and confirmed release. This attempt bound nothing; a concurrent request may acquire the key.Example:
true
application/json
dataobjectRequired- Unknown properties are rejected
Example:
{"id":"00000000-0000-0000-0000-000000000003","currency":"USDC","network":"ethereum","amount":"10.00","recipient_amount":"10.00","amount_in_base_currency":null,"network_fee":null,"network_fee_currency":null,"network_fee_network":null,"fee_amount":"0.10","payout_fee_allocation":"merchant","configured_network_fee_amount":"0.00","network_fee_allocation":"platform","destination":"0x0000000000000000000000000000000000000001","destination_tag":null,"beneficiary_type":"third_party","status":"queued","environment":"live","tx_hash":null,"description":"Withdrawal 1001","executable_at":null,"completed_at":null,"created_at":"2026-09-14T10:00:00Z","updated_at":"2026-09-14T10:00:00Z","failure_reason":null,"operation_id":null,"target_funding_amount":"10.10","funding":null,"balance_movements":[],"economics_status":"available","metadata":{"withdrawal_id":"1001"},"created_by_id":null}idstringRequiredPayout UUID.- Format: uuid
Example:
00000000-0000-0000-0000-000000000001currencystringRequiredCryptocurrency code.Example:
stringnetworkstringRequiredBlockchain network key for explorer and gate routing.Example:
stringamountstringRequiredBase/requested payout amount. This field keeps its historical meaning.- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1recipient_amountstring | nullRequiredAmount sent to the recipient after customer-allocated commercial charges.- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
nullamount_in_base_currencystring | nullRequiredHistorical USD display valuation from the accepted pricing snapshot. Null when that snapshot has no valuation; current rates are never substituted.- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
nullnetwork_feestring | nullRequiredActual processor-reported on-chain network cost denominated in `network_fee_currency` on `network_fee_network`. Null until the payout reaches a terminal state and the processor reports that cost: before completion the actual cost does not exist, and the configured estimate is never substituted for it. The snapshotted commercial charge is the separate `configured_network_fee_amount` field, which is populated from creation in payout currency. The actual on-chain cost is not added to `target_funding_amount`.- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
nullnetwork_fee_currencystring | nullRequiredCurrency of the actual processor-reported network fee.Example:
nullnetwork_fee_networkstring | nullRequiredNetwork of the actual processor-reported network fee.Example:
nullfee_amountstring | nullRequiredDecimal string of the platform payout fee in payout currency.- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
nullpayout_fee_allocation"customer" | "merchant" | "platform" | nullRequiredAllocation of the snapshotted payout service fee.Example:
nullconfigured_network_fee_amountstring | nullRequiredSnapshotted commercial network charge in payout currency; distinct from actual on-chain cost.- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
nullnetwork_fee_allocation"customer" | "merchant" | "platform" | nullRequiredAllocation of the commercial `configured_network_fee_amount` in payout currency, not the actual on-chain `network_fee`.Example:
nulldestinationstringRequiredDestination blockchain address.Example:
stringdestination_tagstring | nullRequiredMemo/tag if applicable.Example:
nullbeneficiary_type"self" | "third_party"RequiredWho receives the funds, declared by the merchant on every payout. `self` — the merchant's own wallet or its own account at an exchange; `third_party` — a wallet that belongs to someone else (a customer, a partner, a payroll recipient). Required on creation, no default. The platform stores the declared value and returns it on the payout; it does not change how the payout executes. Travel Rule handling branches on this axis, so the declaration must be truthful.Example:
selfstatus"queued" | "processing" | "confirming" | "completed" | "failed" | "cancelled" | "reversed"RequiredPayout status. `processing` covers the whole span between dispatch and a terminal outcome: the merchant's funds stay reserved until the payout reaches `completed` or `failed`. `cancelled` is retained in this enum for compatibility but is not emitted for an individual payout.Example:
queuedenvironment"live" | "test"RequiredEnvironment this payout belongs to.Example:
livetx_hashstring | nullRequiredOn-chain transaction hash (populated after broadcast).Example:
nulldescriptionstringRequiredPayout description.Example:
stringexecutable_atstring | nullRequiredEarliest time the payout can be executed.- Format: date-time
Example:
nullcompleted_atstring | nullRequiredCompletion timestamp.- Format: date-time
Example:
nullcreated_atstringRequiredCreation timestamp.- Format: date-time
Example:
2026-01-01T00:00:00Zupdated_atstringRequiredLast update timestamp.- Format: date-time
Example:
2026-01-01T00:00:00Zfailure_reasonstring | nullRequiredMerchant-facing terminal reason. A failed payout reports destination_rejected for a rejected destination, or internal_error for other failures. A reversed payout reports reorg. Null while queued, processing, confirming, or completed.Example:
nulloperation_idstring | nullRequiredFinance operation UUID linked to this payout.- Format: uuid
Example:
nulltarget_funding_amountstring | nullRequiredTarget-denominated obligation H. It is not a source-gate debit.- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
nullfundingobject | nullRequiredFrozen multi-source funding and its durable progress. Null for ordinary source-free payouts and historical payouts without accepted economics.- Unknown properties are rejected
Example:
nullmode"same_asset_only" | "source_only" | "target_first"RequiredExample:
same_asset_onlyservice_class"immediate" | "waiting"RequiredExample:
immediatedirect_target_amountstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1target_ready_amountstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1target_surplus_releasedstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1funding_deadlinestring | nullRequired- Format: date-time
Example:
nullsourcesarray<object>RequiredExample:
[{"conversion_fee_payer":"merchant","source_id":"00000000-0000-0000-0000-000000000001","gate":{"currency":"string","network":"string"},"reserved_gross":"1","exchanged_principal":"1","earned_conversion_fee":"1","refunded_source":"1","outstanding_reserve":"1","target_delivered":"1"}]conversion_fee_payer"merchant" | "platform"RequiredExample:
merchantsource_idstringRequired- Format: uuid
Example:
00000000-0000-0000-0000-000000000001gateobjectRequired- Unknown properties are rejected
Example:
{"currency":"string","network":"string"}currencystringRequired- Minimum length: 1
- Maximum length: 20
Example:
stringnetworkstringRequired- Minimum length: 1
- Maximum length: 64
Example:
string
reserved_grossstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1exchanged_principalstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1earned_conversion_feestringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1refunded_sourcestringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1outstanding_reservestringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1target_deliveredstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1
status"converting" | "needs_review" | "ready" | "closed"RequiredFunding lifecycle within the payout. The outer payout status remains processing during converting and needs_review.Example:
converting
balance_movementsarray<object>RequiredExample:
[{"gate":{"currency":"string","network":"string"},"direction":"credit","amount":"1","credit_amount":"1","debit_amount":"1","reversed_credit_amount":"1","reversed_debit_amount":"1","amount_usd":null}]gateobjectRequired- Unknown properties are rejected
Example:
{"currency":"string","network":"string"}currencystringRequired- Minimum length: 1
- Maximum length: 20
Example:
stringnetworkstringRequired- Minimum length: 1
- Maximum length: 64
Example:
string
direction"credit" | "debit" | "none"RequiredExample:
creditamountstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1credit_amountstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1debit_amountstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1reversed_credit_amountstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1reversed_debit_amountstringRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
1amount_usdstring | nullRequired- Format: decimal
- Pattern: ^\d+(\.\d+)?$
Example:
null
economics_status"available" | "unavailable"RequiredAvailable when the original accepted commercial snapshot exists. Unavailable historical economics are null; current prices never reconstruct them.Example:
availablemetadataobjectRequiredMerchant key-value metadata; omitted invoice metadata is stored and returned as an empty object.- Maximum properties: 50
Example:
{"key":"string"}[key]stringOptional- Maximum length: 500
Example:
string
created_by_idstring | nullRequiredDashboard user who created this payout. `null` when it was created through the API or expanded from a batch, which is what tells the two apart.- Format: uuid
Example:
null
metaobjectRequired- Unknown properties are rejected
Example:
{"request_id":"00000000-0000-0000-0000-000000000001"}request_idstringRequiredCorrelation identifier issued by the API, also returned in the X-Request-ID response header. Client-supplied X-Request-ID values are replaced.Example:
string
{
"data": {
"id": "00000000-0000-0000-0000-000000000003",
"currency": "USDC",
"network": "ethereum",
"amount": "10.00",
"recipient_amount": "10.00",
"amount_in_base_currency": null,
"network_fee": null,
"network_fee_currency": null,
"network_fee_network": null,
"fee_amount": "0.10",
"payout_fee_allocation": "merchant",
"configured_network_fee_amount": "0.00",
"network_fee_allocation": "platform",
"destination": "0x0000000000000000000000000000000000000001",
"destination_tag": null,
"beneficiary_type": "third_party",
"status": "queued",
"environment": "live",
"tx_hash": null,
"description": "Withdrawal 1001",
"executable_at": null,
"completed_at": null,
"created_at": "2026-09-14T10:00:00Z",
"updated_at": "2026-09-14T10:00:00Z",
"failure_reason": null,
"operation_id": null,
"target_funding_amount": "10.10",
"funding": null,
"balance_movements": [],
"economics_status": "available",
"metadata": {
"withdrawal_id": "1001"
},
"created_by_id": null
},
"meta": {
"request_id": "00000000-0000-0000-0000-000000000001"
}
}400 `validation_error`: Validation error.
Idempotent-Replayed"true"OptionalPresent and true when returning the stored outcome of an earlier execution.Example:
trueIdempotency-Key-Released"true"OptionalPresent and true after a proven no-effect refusal and confirmed release. This attempt bound nothing; a concurrent request may acquire the key.Example:
true
application/json
errorobjectRequiredThe error code and diagnostic message.- Unknown properties are rejected
Example:
{"code":"validation_error","message":"string","details":["string"]}code"validation_error"Required`validation_error`: Validation error.Example:
validation_errormessagestringRequiredHuman-readable description of the error.Example:
stringdetailsarray<string>OptionalOptional structured context (validation errors, etc.).Example:
["string"]
metaobjectRequired- Unknown properties are rejected
Example:
{"request_id":"00000000-0000-0000-0000-000000000001"}request_idstringRequiredCorrelation identifier issued by the API, also returned in the X-Request-ID response header. Client-supplied X-Request-ID values are replaced.Example:
string
{
"error": {
"code": "validation_error",
"message": "Request validation failed"
},
"meta": {
"request_id": "00000000-0000-0000-0000-000000000001"
}
}401 `unauthorized`: Unauthorized.
Idempotent-Replayed"true"OptionalPresent and true when returning the stored outcome of an earlier execution.Example:
trueIdempotency-Key-Released"true"OptionalPresent and true after a proven no-effect refusal and confirmed release. This attempt bound nothing; a concurrent request may acquire the key.Example:
true
application/json
errorobjectRequiredThe error code and diagnostic message.- Unknown properties are rejected
Example:
{"code":"unauthorized","message":"string","details":["string"]}code"unauthorized"Required`unauthorized`: Unauthorized.Example:
unauthorizedmessagestringRequiredHuman-readable description of the error.Example:
stringdetailsarray<string>OptionalOptional structured context (validation errors, etc.).Example:
["string"]
metaobjectRequired- Unknown properties are rejected
Example:
{"request_id":"00000000-0000-0000-0000-000000000001"}request_idstringRequiredCorrelation identifier issued by the API, also returned in the X-Request-ID response header. Client-supplied X-Request-ID values are replaced.Example:
string
{
"error": {
"code": "unauthorized",
"message": "Invalid API key"
},
"meta": {
"request_id": "00000000-0000-0000-0000-000000000001"
}
}403 `forbidden`: Forbidden. `api_key_ip_forbidden`: Api key ip forbidden.
Idempotent-Replayed"true"OptionalPresent and true when returning the stored outcome of an earlier execution.Example:
trueIdempotency-Key-Released"true"OptionalPresent and true after a proven no-effect refusal and confirmed release. This attempt bound nothing; a concurrent request may acquire the key.Example:
true
application/json
errorobjectRequiredThe error code and diagnostic message.- Unknown properties are rejected
Example:
{"code":"forbidden","message":"string","details":["string"]}code"forbidden" | "api_key_ip_forbidden"Required`forbidden`: Forbidden. `api_key_ip_forbidden`: Api key ip forbidden.Example:
forbiddenmessagestringRequiredHuman-readable description of the error.Example:
stringdetailsarray<string>OptionalOptional structured context (validation errors, etc.).Example:
["string"]
metaobjectRequired- Unknown properties are rejected
Example:
{"request_id":"00000000-0000-0000-0000-000000000001"}request_idstringRequiredCorrelation identifier issued by the API, also returned in the X-Request-ID response header. Client-supplied X-Request-ID values are replaced.Example:
string
{
"error": {
"code": "forbidden",
"message": "Permission denied"
},
"meta": {
"request_id": "00000000-0000-0000-0000-000000000001"
}
}404 `not_found`: Not found.
Idempotent-Replayed"true"OptionalPresent and true when returning the stored outcome of an earlier execution.Example:
trueIdempotency-Key-Released"true"OptionalPresent and true after a proven no-effect refusal and confirmed release. This attempt bound nothing; a concurrent request may acquire the key.Example:
true
application/json
errorobjectRequiredThe error code and diagnostic message.- Unknown properties are rejected
Example:
{"code":"not_found","message":"string","details":["string"]}code"not_found"Required`not_found`: Not found.Example:
not_foundmessagestringRequiredHuman-readable description of the error.Example:
stringdetailsarray<string>OptionalOptional structured context (validation errors, etc.).Example:
["string"]
metaobjectRequired- Unknown properties are rejected
Example:
{"request_id":"00000000-0000-0000-0000-000000000001"}request_idstringRequiredCorrelation identifier issued by the API, also returned in the X-Request-ID response header. Client-supplied X-Request-ID values are replaced.Example:
string
{
"error": {
"code": "not_found",
"message": "Resource not found"
},
"meta": {
"request_id": "00000000-0000-0000-0000-000000000001"
}
}409 `conflict`: Conflict. `in_flight`: In flight. `funding_policy_conflict`: The funding policy changed before acceptance. `funding_grant_conflict`: The funding grant changed before acceptance.
Idempotent-Replayed"true"OptionalPresent and true when returning the stored outcome of an earlier execution.Example:
trueIdempotency-Key-Released"true"OptionalPresent and true after a proven no-effect refusal and confirmed release. This attempt bound nothing; a concurrent request may acquire the key.Example:
true
application/json
errorobjectRequiredThe error code and diagnostic message.- Unknown properties are rejected
Example:
{"code":"conflict","message":"string","details":["string"]}code"conflict" | "in_flight" | "funding_policy_conflict" | "funding_grant_conflict"Required`conflict`: Conflict. `in_flight`: In flight. `funding_policy_conflict`: The funding policy changed before acceptance. `funding_grant_conflict`: The funding grant changed before acceptance.Example:
conflictmessagestringRequiredHuman-readable description of the error.Example:
stringdetailsarray<string>OptionalOptional structured context (validation errors, etc.).Example:
["string"]
metaobjectRequired- Unknown properties are rejected
Example:
{"request_id":"00000000-0000-0000-0000-000000000001"}request_idstringRequiredCorrelation identifier issued by the API, also returned in the X-Request-ID response header. Client-supplied X-Request-ID values are replaced.Example:
string
{
"error": {
"code": "conflict",
"message": "Request conflicts with the existing state"
},
"meta": {
"request_id": "00000000-0000-0000-0000-000000000001"
}
}422 `unprocessable_entity`: Unprocessable entity. `gate_unknown`: Gate unknown. `funding_not_granted`: The selected funding preferences are outside the grant. `funding_allocation_limit`: Funding the payout would exceed the grant's per-source allocation lineage bound or the derived payout-wide bound. `funding_conversion_fee_payer_invalid`: Funding conversion fee payer must be merchant or platform. `funding_balance_insufficient`: Eligible native balances cannot fund the payout. `funding_route_unavailable`: No eligible route with required platform or physical liquidity can fund the payout.
Idempotent-Replayed"true"OptionalPresent and true when returning the stored outcome of an earlier execution.Example:
trueIdempotency-Key-Released"true"OptionalPresent and true after a proven no-effect refusal and confirmed release. This attempt bound nothing; a concurrent request may acquire the key.Example:
true
application/json
errorobjectRequiredThe error code and diagnostic message.- Unknown properties are rejected
Example:
{"code":"unprocessable_entity","message":"string","details":["string"]}code"unprocessable_entity" | "gate_unknown" | "funding_not_granted" | "funding_allocation_limit" | "funding_conversion_fee_payer_invalid" | "funding_balance_insufficient" | "funding_route_unavailable"Required`unprocessable_entity`: Unprocessable entity. `gate_unknown`: Gate unknown. `funding_not_granted`: The selected funding preferences are outside the grant. `funding_allocation_limit`: Funding the payout would exceed the grant's per-source allocation lineage bound or the derived payout-wide bound. `funding_conversion_fee_payer_invalid`: Funding conversion fee payer must be merchant or platform. `funding_balance_insufficient`: Eligible native balances cannot fund the payout. `funding_route_unavailable`: No eligible route with required platform or physical liquidity can fund the payout.Example:
unprocessable_entitymessagestringRequiredHuman-readable description of the error.Example:
stringdetailsarray<string>OptionalOptional structured context (validation errors, etc.).Example:
["string"]
metaobjectRequired- Unknown properties are rejected
Example:
{"request_id":"00000000-0000-0000-0000-000000000001"}request_idstringRequiredCorrelation identifier issued by the API, also returned in the X-Request-ID response header. Client-supplied X-Request-ID values are replaced.Example:
string
{
"error": {
"code": "unprocessable_entity",
"message": "The request cannot be processed in the current state"
},
"meta": {
"request_id": "00000000-0000-0000-0000-000000000001"
}
}500 `internal_error`: Internal error.
Idempotent-Replayed"true"OptionalPresent and true when returning the stored outcome of an earlier execution.Example:
trueIdempotency-Key-Released"true"OptionalPresent and true after a proven no-effect refusal and confirmed release. This attempt bound nothing; a concurrent request may acquire the key.Example:
true
application/json
errorobjectRequiredThe error code and diagnostic message.- Unknown properties are rejected
Example:
{"code":"internal_error","message":"string","details":["string"]}code"internal_error"Required`internal_error`: Internal error.Example:
internal_errormessagestringRequiredHuman-readable description of the error.Example:
stringdetailsarray<string>OptionalOptional structured context (validation errors, etc.).Example:
["string"]
metaobjectRequired- Unknown properties are rejected
Example:
{"request_id":"00000000-0000-0000-0000-000000000001"}request_idstringRequiredCorrelation identifier issued by the API, also returned in the X-Request-ID response header. Client-supplied X-Request-ID values are replaced.Example:
string
{
"error": {
"code": "internal_error",
"message": "Internal server error"
},
"meta": {
"request_id": "00000000-0000-0000-0000-000000000001"
}
}503 `service_unavailable`: Service unavailable.
Idempotency-Key-Released"true"OptionalPresent and true after a proven no-effect refusal and confirmed release. This attempt bound nothing; a concurrent request may acquire the key.Example:
trueIdempotent-Replayed"true"OptionalPresent and true when returning the stored outcome of an earlier execution.Example:
true
application/json
errorobjectRequiredThe error code and diagnostic message.- Unknown properties are rejected
Example:
{"code":"service_unavailable","message":"string","details":["string"]}code"service_unavailable"Required`service_unavailable`: Service unavailable.Example:
service_unavailablemessagestringRequiredHuman-readable description of the error.Example:
stringdetailsarray<string>OptionalOptional structured context (validation errors, etc.).Example:
["string"]
metaobjectRequired- Unknown properties are rejected
Example:
{"request_id":"00000000-0000-0000-0000-000000000001"}request_idstringRequiredCorrelation identifier issued by the API, also returned in the X-Request-ID response header. Client-supplied X-Request-ID values are replaced.Example:
string
{
"error": {
"code": "service_unavailable",
"message": "Service temporarily unavailable"
},
"meta": {
"request_id": "00000000-0000-0000-0000-000000000001"
}
}