Skip to main content
POST
Submit a signed pull and stream through collectible resolution
Use your builder key and the buyer’s Permit2 signature over the full pull payload. Results belong to that builder and wallet.

Request

Builder key and wallet signature

Response

HTTP 200 stream events

Each event carries a JSON data object with these common fields.Additional field in pull_startedAdditional field in payment_confirmedAdditional fields in draws_resolvedAdditional fields in pull_failed

Failures after the stream opens

Handle a pull_failed event using data.code. Use data.message for display. The data.error field contains the same text.After a failure or disconnect, check the original pull before signing again. Payment may already be confirmed.When data.message is Unable to fund the pull., look up data.code below. The table quotes other messages where they apply.
On mainnet, a refused USDT transfer can still return INSUFFICIENT_USDT_AMOUNT when the allowance is short. Check both the balance and the USDT allowance for Permit2. On testnet, INSUFFICIENT_ALLOWANCE identifies a short approval when the balance covers the price.

Error codes

These HTTP errors can occur before the event stream opens. For guidance on codes shared across endpoints, see Error meanings and recovery.

Authorizations

x-builder-api-key
string
header
required

Your approved builder API key. Keep it on your backend. Gacha and marketplace writes also require wallet action signatures. Redeem also needs a wallet access token, a Bearer token the API issues after the wallet signs a sign-in message.

Body

application/json
packId
string<uuid>
required
numOfTokens
integer
required
Required range: 1 <= x <= 10
amountPerToken
string
required
Pattern: ^\d+$
nonce
string
required
Pattern: ^\d+$
deadline
integer
required
buyerWalletAddress
string
required
permitSignature
string
required

Signature over the typed data that prepare returned, as hex of at most 4,096 bytes. An EOA signs the typed data. A contract wallet submits what its isValidSignature accepts for that data's EIP-712 digest, which can be empty (0x); Permit2 is the caller. The signature is checked before payment and again on chain.

Response

HTTP 200 opens the event stream. A draws_resolved event completes the pull successfully. A pull_failed event ends the stream with an error. Lines starting with : are keep-alive comments.

The response is of type string.