Stream a pull
Follow a signed pack purchase in real time. The stream reports payment progress and ends with the drawn cards or a failure.
Request
Builder key and wallet signature
Response
HTTP 200 stream events
Events and payload fields
Events and payload fields
data object with these common fields.pull_startedpayment_confirmeddraws_resolvedpull_failedFailures after the stream opens
Handle apull_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.- If
payment_confirmedorpull_failedsupplieddata.permitFundTxHash, use it to look up the draw. - If you only have
data.requestIdfrompull_started, check the original request. - If you have neither identifier, check the wallet’s pull history. Use the same recovery steps for an unrecognized code.
data.message is Unable to fund the pull., look up data.code below. The table quotes other messages where they apply.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
Authorizations
Body
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.