Get one faucet drip's status
const url = 'https://example.com/v2/sandbox/faucet/example';const options = {method: 'GET', headers: {'X-CowriePay-Key': '<X-CowriePay-Key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/v2/sandbox/faucet/example \ --header 'X-CowriePay-Key: <X-CowriePay-Key>'Sandbox only. One drip with its per-asset items (txid once broadcast, error_code and error_message on failure). 404 for an unknown id, including a drip that belongs to another workspace.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”The drip.
A sandbox faucet drip and its per-asset items. Item txid is set once the item is broadcast on-chain (watch the matching deposit land with it); item error_code says why an item failed. Drip status aggregates the items (PARTIAL = some confirmed, some failed).
object
Full chain name (always a *_TESTNET chain: drips are sandbox-only).
The funded sandbox wallet address.
object
Human-readable units.
On-chain transaction id once broadcast; null before.
Why the item failed, from a closed set; null unless FAILED. Every code is on CowriePay’s side (the request was validated when the drip was accepted): request a new drip later. Branch on this field, not on error_message.
The fixed human sentence for error_code; null unless FAILED.
Example
{ "status": "PENDING", "items": [ { "status": "PENDING", "error_code": "DISPENSER_NOT_CONFIGURED" } ]}Live key used (code FAUCET_ONLY_SANDBOX) or insufficient scope.
Drip not found (or not yours).