US persons
Buying MLX, buying dedicated seats and the distributor programme aren't offered to US persons. This page says how the API enforces that and how a wallet confirms it isn't a US person.
From the United States and its territories (Puerto Rico, Guam, the US Virgin Islands, American Samoa, the Northern Mariana Islands and the US Minor Outlying Islands) these requests are refused with 451 code: "us", and from comprehensively sanctioned regions with 451 code: "sanctions". Everywhere else they need the wallet's one-time confirmation that it isn't a US person, and answer 428 until it has one. Only the country of the request in hand counts: a wallet that was used or refused from the United States before is treated like any other wallet once it connects from elsewhere, and is refused again whenever a request comes from the US. The definition of a US person is in the Terms.
| What | Where | Gated when |
|---|---|---|
| Spot buy of MLX | POST /api/tx | a swap whose tokenIn is USDC or USDT |
| Seat bought with the wallet | POST /api/tx | buy_node |
| Seat received from another wallet | POST /api/tx | transfer_seat: the recipient must have confirmed it isn't a US person (409, no code) |
| Seat checkout | POST /api/pay | any seat checkout |
| Deposit that buys MLX | POST /api/pay | kind: "deposit" with receive: "MLX" |
| Distributor application | POST /api/d/apply | always |
Selling MLX, sending, withdrawing to Solana, deposits kept as USDC, mining with MLX Node and the read APIs are open to everyone.
{ "error": "Buying MLX isn't offered to US persons or from the United States. You can still sell MLX, mine it and use your wallet.", "code": "us" }{ "error": "Confirm you're not a US person first.", "code": "attest" }POST /api/attest
https://mlx.app/api/attestThe wallet confirms, once, that it isn't a US person. Signed with the wallet like the other signed requests: the x-mlx-auth header holds <wallet>|<ms>|<signature>, where the signature is the wallet key's over the request's method, path and body hash (see Keys and signing). Refused with 451 from the United States and from sanctioned regions.
{ "notUS": true, "statement": "us-v1", "lang": "en" }statement names the confirmation text the app showed (us-v1: "I'm not a US person: not a citizen or resident of the United States or its territories, not there now, and not acting for a US person or company."); lang is the page's language. Both are optional: without statement the current one is assumed.
{ "attested": true, "at": 1793180000000 }The record keeps the time, the country the request came from, the signed x-mlx-auth value with the exact body and its time, the statement and the Terms version it refers to. It isn't on the ledger and isn't public.
GET /api/attest
https://mlx.app/api/attestSigned the same way. Returns whether this wallet has confirmed, whether this request comes from the US, and refused: true while the wallet is held off after a refusal from the US.
{ "attested": true, "at": 1793180000000, "us": false }GET /api/region
https://mlx.app/api/regionWhere the request comes from, as the gates see it. Not cached.
{ "country": "CH", "us": false, "sanctioned": false }Distributor commission
No commission is paid on a purchase made from the United States. Those sales are recorded with their lines marked paused and show as Paused in the distributor portal. A purchase made from anywhere else earns commission as usual, even if the buyer used MLX from the US at another time. If a review finds a paused sale wasn't a US person's, the operator resumes it and its lines go back to pending.