Credentials and environments
Test and production use the same endpoints. Traffic gating comes from the credentials:- Test credentials (
-testsuffix, e.g.<maker>-rfqt-test) receive quote requests only when you authenticate with their API key as a Bearer token. General user flow does not route to test credentials. Use these for your self-test loop. - Production credentials receive general user flow as soon as you connect and start streaming. Bebop issues production credentials once your integration passes
/maker-status.
Testing on mainnet
With streaming and quote responses implemented, run through the following checks on the mainnet of the chain you’re launching on. You’ll need balances and approvals in place to execute a swap. Before moving on, confirm:Pricing connection and streaming
Connect to the Pricing WebSocket and start streaming levels. Confirm no WebSocket error messages come back.
Quotes connection
Connect to the Quotes WebSocket. Implement both success responses and appropriate error responses (e.g. when the size requested is too low, or for unexpected errors).
Fees handled
Ensure you handle fees as described in Fees.
/maker-status: see Diagnostics.
Running self-test quotes
To request quotes from your maker only, send a quote request authenticated with your API key as a Bearer token (the same credential used for the WebSocket connection). The key identifies your maker, so the request routes only through your maker. Example:The maker name corresponds to a specific type of request. Naming convention:
- Self-execution:
MAKER_NAME-rfqt - Self-execution (fast mode):
MAKER_NAME-rfqt-fast
Self-execution quotes
Send a request withgasless: false to test self-execution. Bebop pings your maker for a taker_quote request via the WebSocket. The API response includes a tx object with the calldata to send the order on-chain. See example.
Troubleshooting
If your maker receives no quote requests, or returnsInsufficientLiquidity on requests you expected to fill, check in this order:
- Streaming pricing? The router only routes to makers streaming current pricing. If you’re not on the Pricing WebSocket with fresh levels, you’re invisible.
- Approvals on the settlement contract? The router checks balances and allowances before pinging makers. See Contracts and tokens.
- Enough inventory for the requested size? Your streamed levels are capped at your balance and approval. Large requests skip makers without enough.
- Using the right maker ID? Each mode has its own maker ID. Make sure your test request authenticates with the API key for the right maker.
- Not currently disabled? Check
enabled: falsein/maker-status; a disable message on your WebSocket is another signal.
/maker-status shows what the router sees from your stream. See Diagnostics.