Pulls and buybacks
Submit a pull
Submit a signed pack purchase and get a requestId immediately. The draw continues after you close the connection.
POST
Submit a signed pull and poll its requestId
Submit and track a pull
- Sign the purchase. Have the buyer sign the full Permit2 payload from Prepare a pull. Send it with your builder key. The streaming endpoint accepts the same body and checks the same signature.
- Save the request ID. The API returns HTTP
202withrequestIdand the current status. The purchase belongs to this builder and buyer wallet. - Check the result. Use the ID to get pull status about once per second. Stop at
RESOLVEDorFAILED.
requestId. A failed request can restart. The same signature can charge the buyer only once.If the pull stays in PENDING_PAYMENT for more than 10 minutes, stop polling and contact Renaiss with the original requestId before signing again.Request
Builder key and wallet signature
Response
Failures after submission
A new submission returns HTTP202 with PENDING_PAYMENT. Resubmitting the same signed pull can restart a failed attempt. To check an existing request without restarting it, poll its requestId. A recorded FAILED means nothing was charged.Most codes return Unable to fund the pull. in error.message. The table quotes the 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
For HTTP
4xx or 5xx, match the status and response text below. For guidance on codes shared across endpoints, see Error meanings and recovery.Authorizations
Body
application/json
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
The pull was accepted. The body is the pull status.
PENDING_PAYMENT— The API accepted the pull and is processing the payment.PENDING_RESOLUTION— Payment is confirmed and the API is assigning cards. The status can no longer change toFAILED.RESOLVED— The pull is complete. Readresult.drawsfor the cards.FAILED— The buyer was never charged. Readerror.codefor the reason.
Available options:
PENDING_PAYMENT, PENDING_RESOLUTION, RESOLVED, FAILED Contains code and message when status is FAILED. Null for all other statuses. See pull failures and recovery.