Skip to main content
MakerStream is the bidirectional stream used by whitelisted makers. You receive RFQ requests and send signed quotes on the same connection. The connection is gRPC-web over WebSocket with protobuf payloads. Most integrations should use MakerStreamClient from injective-rfq-toolkit rather than hand-rolling framing.

Endpoint

Connection details:
The indexer’s internal proto may use different package or method names. Public traffic uses the injective_rfq_rpc.InjectiveRfqRPC/MakerStream alias. Use the public alias shown above.

Connection sequence

Until the auth challenge is answered successfully, the stream may remain open but no request events arrive.

Message types

MakerStream responses are tagged by message_type. MakerStream requests you send are also tagged:

Auth handshake

The indexer challenges the maker address announced in connection metadata. Sign the challenge with the same EIP-712 domain family used for quotes:

MakerChallenge

StreamAuthChallenge

Type string:

MakerAuth

Send the response as:
injective-rfq-toolkit handles framing, pings, and MakerChallenge auth when configured with auth fields.
If the stream connects and pongs return, but no request events arrive, debug the auth challenge first: wrong evm_chain_id, wrong contract domain, stale challenge, or a signature over hashed nonce bytes instead of raw nonce bytes are common causes.

Implementation checklist

  • Use the grpc-ws WebSocket subprotocol.
  • Send maker_address metadata on connect.
  • Answer MakerChallenge before expecting requests.
  • Start pinging immediately and continue roughly every second.
  • Treat rfq_id from each request as the correlation key.
  • Log every quote_ack, quote_update, settlement_update, and error.
  • Reconnect with backoff and re-authenticate after reconnecting.

ADL and position monitoring

MakerStream carries RFQ coordination events only. It does not replay every onchain position change. Auto-deleveraging (ADL) is handled by Injective’s exchange module through a position-offsetting mechanism. If one of your existing positions is offset by ADL, you will not receive an RFQ request or submit a quote for that close. Subscribe to the normal Injective derivative trade or position stream for your maker subaccounts and treat execution_type = OffsettingPosition as a real close event. ADL selection happens outside MakerStream. After an ADL close lands, update your inventory and close or resize the external hedge according to your risk policy. See Auto-deleveraging (ADL). Next: RFQ requests and Sending quotes.
Last modified on June 4, 2026