DarkRouteDarkRoute
Integrateno key required to start

You will have to tell your
users something true.

Anyone can hand you a private swap. Almost nobody can hand you a sentence about it that survives your users checking it. This page is the sentence: what the API does, exactly what an order leaves behind, and what you are and are not allowed to say about us.

The endpoints themselves live on /api, with an OpenAPI spec. Start there; nothing on this page is needed to make your first call.

The flow

Four calls, no accounts.

Quote

Ask for a price on a pair and an amount. Dry: it never creates an order and never touches the venue's book. The fee and the venue's name are both in the answer.

Order

Create one and you get an id. There are no accounts, so the id is the credential. Treat it as a secret on your side.

Deposit

The venue issues a one-time deposit address. Your user sends to it. DarkRoute never holds the funds and cannot reverse them.

Settle

The route fills and the destination address receives. Status is on the order call, or we can call you when webhooks land.

Partner keys

A key buys a relationship, not access.

Every route is public and stays that way. We said so on /api before keys existed, and a promise that only holds until it becomes inconvenient is not one. So a key is not a gate. It is what makes you a partner rather than an anonymous caller.

The ability to create orders

POST /order needs a key. Quoting, prices, the pool index and every read do not, and never will: those you can call right now without speaking to anyone.

Attribution

Orders created with your key are tagged to you. This is what any revenue share or rebate would be calculated from.

A higher ceiling

Public routes are limited per IP because we do not know who is calling. With a key we do, so the limits move.

Your own orders, listed

The orders your key created, for your support desk. Never anyone else's, and never orders from another partner.

Your name on this page

We list integrations under their real name, the same way we name the venue on every quote.

And what it does not do
Gate the whole API

Only POST /order. Quotes, token prices, the pool index, supply and every status call stay open to anyone, at the public rate limits.

Show you other people's orders

A key widens what you can do with your own traffic. It never widens what you can see of anyone else's.

Buy an exception to the rules below

The claims policy is the reason the key is revocable. That is the whole leverage and we intend to use it.

How to get one
Email us. A person reads it.

There is no self-serve form. Tell us what you are building and where our swap would sit in it, and we will answer with a key or with a reason. Keys are issued one at a time, by hand, and they are revocable.

[email protected]

Send the key as a header, never in a URL: Authorization: Bearer <key>. URLs end up in server logs, proxy logs, browser history and Referer headers, and a key that reaches any of those is a key you have to replace.

Data

What an order leaves behind.

Copy this into your own privacy page if it is useful. It is written to be pasted rather than paraphrased, because a partner paraphrasing a privacy claim is how a small overstatement becomes a large one.

Kept
Order id
Random, 48 bits. The only credential that exists.
Assets and chains
What was swapped, from where, to where.
Amounts
Input, estimated output, minimum accepted, and the USD value at quote time.
Three addresses
Recipient, refund, and the venue's one-time deposit address.
Status and the venue's reply
So the tracking page can answer, and so support has something to read.
Wallet address, only if your user signed in
Signing in is optional and only powers the rewards ledger. Skip it and this is null.
Fee charged
The number already printed on the quote.
Not kept
No name, no email, no KYC
We never ask, so there is nothing to lose.
No IP, and no hash of one
We kept a truncated hash of the caller's IP on every order until 15 September 2026. Nothing read it, and hashing an IP is not anonymising one: the whole IPv4 space is 4.3 billion addresses, so matching the hashes back is minutes of work. It sat in the same row as the recipient address, which made it a way to connect a person to a transaction. The column is gone.
No account
There is nothing to create and nothing to delete.
No analytics on the app
The router has no third-party scripts. Nothing on it phones anywhere about your users.
Claims

What you may say about us.

This list is binding on anyone holding a key, and it is the reason keys are revocable. It is short because the true claims are short.

Say these
  • ✓No account and no KYC.
  • ✓Non-custodial: the deposit address belongs to the venue, not to DarkRoute.
  • ✓The order does not appear on a public order book.
  • ✓A one-time deposit address per order.
  • ✓The venue is named, and the fee is printed, on every quote before any deposit.
Never these
  • Anonymous

    An order record exists and the table above says what is in it. Anonymity is a claim we cannot back, so neither can you.

  • Untraceable

    Every leg of the swap is on a public chain. We do not obscure it and cannot.

  • No logs

    We keep the order record listed above. Saying otherwise on our behalf is the fastest way to lose a key.

  • Zero knowledge, mixer, tumbler

    None of these describe what this is. They describe things that attract a different kind of attention, and we are not renting our name to them.

With or without a key

Four things that do not move.

The fee is printed before the deposit

0.3% of the input, on the quote. If your integration hides it from your user, that is your choice and your problem, not a fault in the number.

A partner markup must be its own line

If you add a margin on top, it has to be visible in the quote your user sees, as a separate figure. Our entire position is that a quote names the venue and prints the fee. We are not going to hand out an API that makes us the thing we criticise.

The order id is the credential

Anyone holding it can read that order's status and deposit address. Do not put it in a URL you log, and do not put your key in one either: send the key as a header.

We are small

Since 8 September we have settled a few hundred dollars of volume. If you need reach, we are not it yet. If you need a claim that survives your users checking it, that is what this page is.

We changed a published rule to do this

/api promised that keyless access would stay when keys arrived. Creating an order now needs one. We would rather write that sentence than let the old promise quietly rot on a page nobody rereads, and everything except order creation stayed open.

Found a hole in any of this? /security says where to send it, and every paid report is published in full at /security/reports, including the parts that do not flatter us.