MLXDocs
Network API

US persons

Markdown

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.

WhatWhereGated when
Spot buy of MLXPOST /api/txa swap whose tokenIn is USDC or USDT
Seat bought with the walletPOST /api/txbuy_node
Seat received from another walletPOST /api/txtransfer_seat: the recipient must have confirmed it isn't a US person (409, no code)
Seat checkoutPOST /api/payany seat checkout
Deposit that buys MLXPOST /api/paykind: "deposit" with receive: "MLX"
Distributor applicationPOST /api/d/applyalways

Selling MLX, sending, withdrawing to Solana, deposits kept as USDC, mining with MLX Node and the read APIs are open to everyone.

451 from the United States
{ "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" }
428 before the confirmation
{ "error": "Confirm you're not a US person first.", "code": "attest" }

POST /api/attest

POSThttps://mlx.app/api/attest

The 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.

Request body
{ "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.

Response
{ "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

GEThttps://mlx.app/api/attest

Signed 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.

Response
{ "attested": true, "at": 1793180000000, "us": false }

GET /api/region

GEThttps://mlx.app/api/region

Where the request comes from, as the gates see it. Not cached.

Response
{ "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.