Makers

pAMM Quote WebSocket

This endpoint is reserved for trading firms operating a prop AMM on Ethereum who want to land quote updates in Titan blocks. Access is API-key gated, please reach out if you want access.

Behavioural properties

Maker priority

The builder provides two defences against being picked off on latency.

Taker ordering. When a taker trade against the pool is included in a block, the latest applicable quote update is guaranteed to be placed before it in the same block.

Maker freshness protection. A per-session freshness buffer b, set at onboarding, can be applied to takers routing against your pool. A taker is only eligible to trade against a quote update if the taker was received by the builder at least b before that quote update was received:

taker_recv + b < quote_update_recv

For example, with b = 50ms, a quote update received at time T can only be matched against takers received before T - 50ms.

This reduces exposure to toxic takers attempting to snipe stale quotes, while also protecting makers in case of quote streaming failures mid-slot.

Fast replacements and cancellations

Quotes sent through this endpoint take the fastest path to the builders. We have cores dedicated to simulating and applying these bundles efficiently. Cancellations are more consistent due to stricter block overwrite rules.

Conditional inclusion

Quote transactions can either land every block, or only when a taker in the block trades against the pool. The builder evaluates each candidate tx against every live quote and, in conditional mode, includes the latest quote update immediately before any matching taker - quotes that are never matched never go onchain.

Authentication

Authentication uses an API key shared directly when access is granted. Specify it in the Authorization header when establishing the WebSocket connection.

Endpoints

Use the following regional endpoints to get the lowest latency between your quote publisher and our clusters. Higher-performance URLs (direct access) are available on request.

Region
Endpoint

eu-central-1

wss://eu.rpc.titanbuilder.xyz/ws/sendquoteupdate

ap-northeast-1

wss://ap.rpc.titanbuilder.xyz/ws/sendquoteupdate

us-east-1

wss://us.rpc.titanbuilder.xyz/ws/sendquoteupdate

Submit quote (ws/sendquoteupdate)

replacement_uuid must be set and exactly 16 bytes. replacement_seq_number must be set and strictly greater than the previous value seen under the same replacement_uuid and cannot be 0. Messages violating either constraint are dropped.

We recommend setting disable_cross_region_sharing to true. Otherwise we broadcast your quotes internally across regions, which adds latency you do not control. For best results, run edge nodes next to each of our regional clusters and send directly to the closest.

Cancel quotes

Send a PWebsocketQuoteUpdateV1Args with tx empty, replacement_uuid set to the quote you want to pull, and a strictly greater replacement_seq_number than the last update under that uuid.

Response

Match responses to submits on (replacement_uuid, replacement_seq_number). Use timestamp minus your local send-time to measure end-to-end latency.

Example (Rust)

Pricing

Quote updates submitted through this endpoint do not pay priority fees.

Instead, makers are charged a volume-based fee on filled trades. Fees are configured on a per-pair basis. Pricing may differ across assets depending on market structure and quoting behaviour, though fees across makers are the same.

During the initial testing phase, fee discounts are active while we collect data on spreads, fill quality, and realised markouts across different markets. We expect to move to a more stable and publicly documented fee schedule once the system has been sufficiently tested and pricing can be calibrated from production data. Please reach out directly for more information on current pricing.

Permissionless Access

We're also exploring opening these guarantees up permissionlessly. For example, we are exploring supporting this initiative: https://github.com/flashbots/priority-update-registryarrow-up-right

Last updated