> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stablemesh.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Issue and manage StableMesh cards from your own server with the Open API.

The StableMesh Open API lets you run your cards from your own server. You can fund your account, issue cards, top them up, track payments, withdraw, freeze and cancel. Webhooks tell you when anything changes.

The API acts **as your account**. It sees the same USD account, cards and balances as your dashboard, and the same fees, card limits and verification rules apply.

***

## Base URL

```
https://api.stablemesh.io
```

All endpoints live under `/v1`, for example `https://api.stablemesh.io/v1/card/list`.

***

## Conventions

* **Every request is `POST`** with a JSON body and `Content-Type: application/json`. Send `{}` when an endpoint takes no parameters.
* **Authenticate** with your API key in the `X-API-KEY` header. See [Authentication](/api-reference/authentication).
* **Amounts are decimal strings** in responses, such as `"102.9"`. In requests you can send a number or a string.
* **Balances are in USD.** Stablecoin deposits are credited as USD.
* **Timestamps** are ISO 8601 in UTC, such as `2026-10-04T09:00:00Z`.
* **Lists are paged** with `pageNumber` (from 1) and `pageSize` (1–100, default 20).

***

## Response envelope

Every response has the same shape.

```json Success theme={null}
{
  "code": 0,
  "message": "ok",
  "data": { }
}
```

```json Error theme={null}
{
  "code": 4011,
  "message": "This card can't be topped up through the API. Use the dashboard for this card."
}
```

`code` is `0` on success. Any other value is an error, and the HTTP status matches it. See [Errors](/api-reference/errors).

***

## What the API can change

Every card on your account is visible through the API. Whether the API can **change** a card depends on its product. Each card and product lists what is allowed in `operations`:

| Value | Endpoint |
| - | - |
| `TOP_UP` | `card/deposit` |
| `WITHDRAW` | `card/withdraw` |
| `FREEZE` | `card/freeze` |
| `UNFREEZE` | `card/unfreeze` |
| `CANCEL` | `card/cancel` |

A change that isn't listed is refused with `4011`, and you can make it in the dashboard instead. Renaming (`card/update`) works on every card. The API never returns full card numbers or CVVs.

***

## A typical flow

<Steps>
  <Step title="Fund your account">
    Call `deposit/networks`, then `deposit/address`, and send stablecoins to the address. `deposit.credited` fires when the funds arrive.
  </Step>

  <Step title="Pick a product">
    Call `card/products` to see the card products open to your account, their fees, and their minimum first deposit.
  </Step>

  <Step title="Issue a card">
    Call `card/create` with a `binId` and an `amount`. `card.activated` fires when the card is ready.
  </Step>

  <Step title="Operate it">
    Use `card/deposit`, `card/withdraw`, `card/freeze` and `card/cancel` as needed. Watch payments with `card/transactions` or the `transaction.*` webhooks.
  </Step>
</Steps>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.