curl --request POST \
--url https://api.hevn.finance/dapi/v1/escrow/{escrowId}/actions/{idempotencyKey}/confirm \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"signature": "<string>"
}
'import requests
url = "https://api.hevn.finance/dapi/v1/escrow/{escrowId}/actions/{idempotencyKey}/confirm"
payload = { "signature": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({signature: '<string>'})
};
fetch('https://api.hevn.finance/dapi/v1/escrow/{escrowId}/actions/{idempotencyKey}/confirm', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"deal": {
"id": "<string>",
"status": "draft",
"availableActions": [
"approve"
],
"sender": {
"clientId": "<string>"
},
"receiver": {
"clientId": "<string>"
},
"token": "<string>",
"maxAmount": "500.00",
"authorizedAmount": "500.00",
"capturableAmount": "500.00",
"refundableAmount": "500.00",
"windows": {
"approveBy": "2023-11-07T05:31:56Z",
"holdUntil": "2023-11-07T05:31:56Z",
"refundableUntil": "2023-11-07T05:31:56Z"
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"action": {
"action": "approve",
"idempotencyKey": "<string>",
"status": "awaitingSignature",
"amount": "500.00",
"feeBps": 123,
"transactionHash": "<string>",
"approval": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payload": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
}
},
"consistent": true
},
"action": {
"action": "approve",
"idempotencyKey": "<string>",
"status": "awaitingSignature",
"amount": "500.00",
"feeBps": 123,
"transactionHash": "<string>",
"approval": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payload": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
}
},
"events": [
{
"name": "<string>",
"transactionHash": "<string>",
"blockNumber": 123,
"amount": "500.00"
}
],
"pollUrl": "<string>"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}Submit the signature for a prepared escrow action
Submit the signature for the previously prepared escrow action. The path idempotency key must match the prepared action and makes safe retries return the first result.
curl --request POST \
--url https://api.hevn.finance/dapi/v1/escrow/{escrowId}/actions/{idempotencyKey}/confirm \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"signature": "<string>"
}
'import requests
url = "https://api.hevn.finance/dapi/v1/escrow/{escrowId}/actions/{idempotencyKey}/confirm"
payload = { "signature": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({signature: '<string>'})
};
fetch('https://api.hevn.finance/dapi/v1/escrow/{escrowId}/actions/{idempotencyKey}/confirm', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"deal": {
"id": "<string>",
"status": "draft",
"availableActions": [
"approve"
],
"sender": {
"clientId": "<string>"
},
"receiver": {
"clientId": "<string>"
},
"token": "<string>",
"maxAmount": "500.00",
"authorizedAmount": "500.00",
"capturableAmount": "500.00",
"refundableAmount": "500.00",
"windows": {
"approveBy": "2023-11-07T05:31:56Z",
"holdUntil": "2023-11-07T05:31:56Z",
"refundableUntil": "2023-11-07T05:31:56Z"
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"action": {
"action": "approve",
"idempotencyKey": "<string>",
"status": "awaitingSignature",
"amount": "500.00",
"feeBps": 123,
"transactionHash": "<string>",
"approval": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payload": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
}
},
"consistent": true
},
"action": {
"action": "approve",
"idempotencyKey": "<string>",
"status": "awaitingSignature",
"amount": "500.00",
"feeBps": 123,
"transactionHash": "<string>",
"approval": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payload": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
}
},
"events": [
{
"name": "<string>",
"transactionHash": "<string>",
"blockNumber": 123,
"amount": "500.00"
}
],
"pollUrl": "<string>"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}Authorizations
Platform access token from POST /auth/token, carrying the platform audience and the developer_key_id of the registration that minted it. It acts as your own account; name a client you created with X-Hevn-Account: cl_…. Every request re-checks that the registration is still active and that the caller's source IP is inside its allowlist. A token is valid only against the server that issued it, so sandbox tokens are refused in production and production tokens in the sandbox.
Headers
The client account to act for, as a cl_… id. Omit it to act as yourself.
"cl_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"
Path Parameters
^(?:esc_)?[A-Za-z0-9._:\-]{1,216}$1 - 128Body
Response
Successful Response
Latest escrow state after processing the action.
Show child attributes
Show child attributes
Prepared or submitted action.
Show child attributes
Show child attributes
Observed on-chain events for this action.
Show child attributes
Show child attributes
Relative API URL to poll while processing continues.
Was this page helpful?