> For the complete documentation index, see [llms.txt](https://titan-exchange.gitbook.io/titan/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://titan-exchange.gitbook.io/titan/developer-doc/developers-portal/faq.md).

# FAQ

Common questions about the Titan Developers Portal.

## Access and credentials

**What is the difference between the Developers Portal and distributor access?**

The Portal is self-serve: create an API key at [developer.titan.exchange](https://developer.titan.exchange/) and call `portal.api.titan.exchange` over REST. Distributors — [Triton](https://docs.triton.one/trading-apis/titan-swap-api) and [QuickNode](https://marketplace.quicknode.com/add-on/titan-swap) — issue a JWT and their own endpoint, and provide REST (Titan Gateway) and, for enterprise customers, WebSocket streaming (Titan Direct). Routing is identical on every path.

**Can a distributor JWT be used with the Portal?**

No. The Portal accepts only an `x-api-key` header. A JWT sent to `portal.api.titan.exchange` returns `401 invalid_api_key`. A Portal key sent to a distributor endpoint fails the same way. See [Authentication](/titan/developer-doc/developers-portal/authentication.md).

**Does the Portal support WebSocket streaming?**

Not on the standard plans. `/api/v1/ws` does not exist on `portal.api.titan.exchange`. Streaming quotes are provided by [Titan Direct](/titan/developer-doc/swap-api/reference/direct.md), which is an [Enterprise](/titan/developer-doc/developers-portal/plans-rate-limits-credits.md#enterprise) feature — today delivered through distributors.

**Are DART Swap API keys the same as Portal keys?**

No. [DART Swap API](/titan/developer-doc/dart-swap-api/get-api-access.md) keys are issued separately and work only against `api.titan.exchange/dart`. Portal keys work only against `portal.api.titan.exchange`. The two are not interchangeable.

**Is a wallet signature required to fetch quotes?**

No. Only the API key is required. Signing applies when submitting the resulting transaction to Solana through your own RPC.

**How many API keys can an organization have?**

Sandbox includes one key. Build, Scale and Growth include five. Rate limits and credits are pooled across all keys in the organization.

## Requests and responses

**Why is the response unreadable binary?**

The default encoding is MessagePack. Set `Accept: application/json` on every request. See [Response format](/titan/developer-doc/developers-portal/introduction.md#response-format).

**Why does the response contain only one provider?**

`numQuotes` defaults to `1`. Pass `numQuotes=5` (maximum `10`) to receive quotes from every provider that can route the swap.

**Which route should be executed?**

The one named in `metadata.ExpectedWinner`. It is the best slippage-adjusted route, accounting for simulation results and reliability. The highest `outAmount` is not reliably the best fill.

**Why does `quotes[0]` return `undefined`?**

`quotes` is an object keyed by provider ID, not an array. Iterate with `Object.entries(quotes)` or read `quotes[metadata.ExpectedWinner]` directly.

**Are the parameters the same as Titan Gateway?**

Yes. The same fields, passed as flat query parameters rather than nested `swap` and `transaction` objects. Lists are comma-separated. See [Parameter format](/titan/developer-doc/developers-portal/quickstart.md#parameter-format) and the [Quote Swap reference](/titan/developer-doc/developers-portal/reference/quote-swap.md).

**Why does a `404` response have no `metadata.errors`?**

`metadata.errors` is present when providers attempted the route and failed. It is absent when the request failed validation before reaching them — most commonly a `userPublicKey` that is not a usable wallet. See [Errors](/titan/developer-doc/developers-portal/errors.md).

## Plans and billing

**What is a credit?**

The unit of usage on a plan. Currently, one credit is consumed per request — one quote call, one credit — on every endpoint. Each plan includes a monthly credit allowance; see [Plans, Rate Limits & Credits](/titan/developer-doc/developers-portal/plans-rate-limits-credits.md#credits).

**Do rate limits apply per key or per organization?**

Per organization. The rolling 60-second window is shared across every key and every region. See [Plans, Rate Limits & Credits](/titan/developer-doc/developers-portal/plans-rate-limits-credits.md).

**What is the difference between `rate_limited` and `allowance_exhausted`?**

`rate_limited` means more than `rps × 60` requests in the last 60 seconds; wait `retry-after` seconds. `allowance_exhausted` means the month's credits are spent; retrying does not resolve it until the period rolls over or the plan is upgraded.

**Do unused credits roll over?**

No. Credits are granted per paid month from the purchase date and expire at the end of that month.

**What happens when a paid plan lapses?**

The organization returns to Sandbox limits — 1 request per second and 2,500,000 credits per month. Existing keys keep working.

**When does an upgrade or downgrade take effect?**

Upgrades apply immediately, and unused credits carry into the first month of the new plan. Downgrades apply at the end of the current period.

**How are plans paid for?**

Prices are in USD. Plans are currently paid in USDC at 1 USDC = 1 USD. Network fees are paid by the customer. See [Payment](/titan/developer-doc/developers-portal/plans-rate-limits-credits.md#payment).

## Titan Genesis 50

**What is Titan Genesis 50?**

A launch offer. The first 50 organizations to complete a paid purchase of Build, Scale or Growth during the launch window (23 September 2026, 00:00 UTC – 23 October 2026, 00:00 UTC) receive 25% off the base subscription for 12 months of calendar time from their join date. See [Titan Genesis 50](/titan/developer-doc/developers-portal/titan-genesis-50.md) for full terms.

**Does the discount apply if the plan changes?**

Yes, within the 12-month period, for renewals, upgrades and downgrades among the eligible plans. Only the months of a purchase that fall inside the period are discounted; anything beyond it is charged at standard price.

**Does dropping to Sandbox end membership?**

No. Membership stays with the organization for the full 12-month period, including if it drops to Sandbox and returns within that time. The clock continues to run on calendar time during any pause.

## Support

**Where are issues reported?**

See [Community & Support](/titan/developer-doc/resources/community-and-support.md). Include the `x-amzn-requestid` response header and, for quote requests, the `id` field or `quoteId.tag` from the response.
