Developers

Widget and price API

Put Nodo's OTC desk on your site: a one-line widget and a price API with your margin included. For Nodo partners.

If you are a Nodo partner, your clients can buy USDC from your site. There are three ways, all with your margin already in the price:

What it's forWhat you need
OTC linkSharing by email, social media, or messageYour partner code
WidgetA purchase calculator on your siteOne line of code and your domains
Price APIShowing the USDC price in your own systemAn API key

In all three, the client contracts with Nodo AI, Inc.: they verify, sign the contract, and pay on nodoia.app. You never touch client data or money. Your margin is added to Nodo's price, your clients see only the final price, and you earn it on every purchase they make, with no time limit.

How it works

  1. The client uses the widget on your site, or your system shows them the price: they choose a currency (USD or EUR) and an amount.
  2. They tap Buy under contract. nodoia.app opens in a new tab, with the contract already filled in with that amount and currency.
  3. They verify once, sign, and transfer from a bank account in their name.
  4. When the deposit clears, the desk delivers the USDC on the Base network.
  5. You see the purchase in your panel and are paid your margin at the end of the month.

Widget

Paste this line where you want the calculator to appear:

<script src="https://www.nodoia.app/widget.js" data-ref="YOUR-CODE"></script>

The script creates a nodoia.app iframe right after the line. The iframe sizes its own height. You can place several on the same page.

Options

AttributeValuesWhat for
data-refYour partner codeRequired. Puts your margin in the price
data-themelight, darkLight or dark background
data-accentA color, e.g. #0f7b5fButton color
data-langes, en, deLanguage
data-currencyUSD, EURCurrency it opens with
data-amountA number, e.g. 10000USDC it opens with

Colors, language, and currency can also be set in your partner panel without touching the code; what you put in the code wins. The price never comes from the code: it always comes from Nodo, with the margin saved in your panel.

Domains

The widget only shows on the domains you register in your panel, for example yourcompany.com and www.yourcompany.com. On any other site the browser won't show it, so nobody can put your widget on a fake site.

What doesn't change

  • The widget always shows "Powered by nodo.ia · Nodo AI, Inc. · FinCEN-registered MSB".
  • The contract always opens on nodoia.app, in Nodo's design.
  • Today the widget sells USDC. Inside their Nodo wallet, the client can switch it to USDT.

Price API

For showing the USDC price inside your own system, for example next to the other currencies of an exchange house. It is read-only: it creates no orders and moves no money.

Key

In your partner panel, under API, tap Create key and copy it: it is shown only once. Keep it on your server, never in a browser or an app. You can revoke it and create another at any time.

Requesting the price

curl "https://www.nodoia.app/api/v1/otc/price?currency=EUR&amount=10000" \
  -H "Authorization: Bearer nodo_pk_live_..."
ParameterValues
currencyUSD, EURRequired
amountUSDC, from 5,000 to 1,000,000Optional. With it, the response includes the total

Response

{
  "asset": "USDC",
  "network": "base",
  "currency": "EUR",
  "amount": 10000,
  "price": 0.9206,
  "total": 9206.0,
  "minUsdc": 5000,
  "maxUsdc": 1000000,
  "quoteMinutes": 15,
  "tiers": [
    { "minUsdc": 5000, "price": 0.9206 },
    { "minUsdc": 50000, "price": 0.9152 },
    { "minUsdc": 250000, "price": 0.9116 }
  ],
  "buyUrl": "https://www.nodoia.app/otc/buy?ref=YOUR-CODE&amount=10000&currency=EUR",
  "updatedAt": "2026-11-08T15:00:00.000Z"
}
  • price: the price of one USDC for that amount, with your margin included. tiers gives the price per tier.
  • buyUrl: the link for your buy button. It opens Nodo's contract with the amount and currency already filled in.

Errors and limits

CodeErrorWhat happened
401invalid_keyThe key doesn't exist or was revoked
400invalid_currencyThe currency is not USD or EUR
400amount_out_of_rangeThe amount is outside 5,000–1,000,000 USDC
429rate_limitedMore than 60 requests per minute with that key

The price

The widget and API price is indicative. The one that counts is the contract's: it is fixed for 15 minutes when the client opens it to sign, all-in. From 50,000 USDC the price drops, and for large amounts the desk can improve it.

Questions: business@nodoia.app.