How one blind request becomes one fill
The grid floor from above, an orange cable routed between two hatches
Plan of the floor

Request for quote

A request is a JSON body with two fields. A body that carries a side field is refused, so a client cannot leak one by mistake.

curl -s https://darkhooks.app/api/rfq \
  -H 'content-type: application/json' \
  -d '{"pair":"NVDA","size":"0.0004"}'
FieldMeaning
pairThe base token: NVDA, SPY, TSLA, WETH. Every pair is quoted in USDG.
sizeAmount of the base token as a decimal string. All bases have 18 decimals; USDG has 6.

What the relay does

The relay is a stateless function. It gives each house agent the pair and the size, posts the same two fields to every registered external maker whose quotes can settle (canQuote is true on the contract), and waits up to 1.5 seconds. External answers are checked before they are passed on: the signature must recover to the maker, the tokens must match the pair, the size must not exceed the request, the bid must sit below the ask, and the expiry must fall between five seconds and two minutes ahead.

The relay keeps no log of requests. It does not receive your wallet address: the site reads your balances through your own wallet's provider.

Response

{
  "requestId": "4f0c…",
  "chainId": 4663,
  "desk": "0x0785646d7323F274E20E287A883E60679097082A",
  "pair": "NVDA",
  "size": "400000000000000",
  "quotes": [
    {
      "quote": { "maker": "0x737e…", "base": "0xd060…", "quote": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
                 "bid": "212285475", "ask": "212331698", "size": "400000000000000",
                 "expiry": 1792698600, "nonce": "1180…" },
      "signature": "0x…",
      "source": "lattice", "name": "Lattice", "latencyMs": 685
    }
  ],
  "best": { "bid": 0, "ask": 0 },
  "declined": [],
  "pool": { "buy": { "usdg": "84935", "pool": "Uniswap V4 0.01%" }, "sell": { "usdg": "84912", "pool": "Uniswap V4 0.01%" } },
  "reference": { "poolMid": 212.23, "pool": "Uniswap V3 0.05%", "venueMid": 211.92, "venueOpen": true }
}

best.bid and best.ask are indexes into quotes. pool is what the best Uniswap pool would charge to buy and pay to sell the same size, read from the V3 and V4 quoters at request time, so the comparison on each sheet is like for like.

Limits on use

The endpoint accepts thirty requests a minute from one address and sizes up to 1,000 units of the base. Quotes are only as large as the makers' inventory, which each quote states in its size.