> The full uetr.ai documentation index is at https://uetr.ai/llms.txt, and every page under https://uetr.ai/docs/api is also Markdown at its address plus `.md`.

# Quickstart

Make your first call in a few minutes: create a key, read the demo transfer, then add a transfer of your own.

## 1. Create an API key

Sign in to uetr.ai (a free account works), open the [AI and API](https://uetr.ai/connect) page and create a key. Read access is enough to read transfers; choose read and write access to add them. The key is shown once, so store it in your secret manager, then make it available to your shell:

```sh
export UETR_API_KEY="paste-your-key-here"
```

## 2. Read the demo transfer

Every key can read the demo transfer, `00000000-0000-4000-8000-000000000000`. Each hour (UTC) it is searching, with no bank reports, for its first 10 minutes, then gains a bank report every 10 minutes until it is credited at 50 minutes past the hour:

```sh
curl "https://uetr.ai/api/v1/transfers/00000000-0000-4000-8000-000000000000" \
  -H "Authorization: Bearer $UETR_API_KEY"
```

The answer is the transfer as the dashboard shows it, with every bank report so far. While the demo transfer is in transit it reads:

```json
{
  "transfer": {
    "id": "00000000-0000-4000-8000-000000000000",
    "uetr": "00000000-0000-4000-8000-000000000000",
    "label": "Demo transfer",
    "view": "full",
    "status": "in_transit",
    "position_sentence": "Handed to the next bank or payment system; the payment transfer remains tracked. The reports do not say which bank holds the money.",
    "status_code": "ACSP/G000",
    "status_explanation": "Passed to the next agent or market infrastructure, with tracking continuing.",
    "checks_finished": false,
    "amount": {
      "value": 12500,
      "currency": "EUR"
    },
    "payment_date": "2026-10-14",
    "bank_reported_amount": {
      "value": 12500,
      "currency": "EUR",
      "payment_date": "2026-10-14"
    },
    "last_checked_at": "2026-10-14T09:20:00.000Z",
    "monitoring_until": "2026-10-14T10:00:00.000Z",
    "check_frequency_minutes": 10,
    "archived": false,
    "added_at": "2026-10-14T09:00:00.000Z"
  },
  "events": [
    {
      "reported_at": "2026-10-14T09:10:00.000Z",
      "observed_at": "2026-10-14T09:10:00.000Z",
      "status": "in_transit",
      "status_code": "ACSP/G000",
      "status_explanation": "Passed to the next agent or market infrastructure, with tracking continuing.",
      "reporting_bank": {
        "name": "Demo Sending Bank",
        "country": "GB",
        "bic": null
      },
      "bank_processing_status": null,
      "extended_tracking_status": null,
      "amount": {
        "value": 12500,
        "currency": "EUR"
      },
      "currency": "EUR",
      "fees": [],
      "payment_date": "2026-10-14",
      "bank_reference": null,
      "chips_ssn": null,
      "details": [
        {
          "kind": "charge_bearer",
          "code": "SHAR",
          "explanation": "Shared charges (SHA)",
          "event_number": null,
          "bank": null
        }
      ]
    },
    {
      "reported_at": "2026-10-14T09:20:00.000Z",
      "observed_at": "2026-10-14T09:20:00.000Z",
      "status": "in_transit",
      "status_code": "ACSP/G000",
      "status_explanation": "Passed to the next agent or market infrastructure, with tracking continuing.",
      "reporting_bank": {
        "name": "Demo Correspondent Bank",
        "country": "US",
        "bic": null
      },
      "bank_processing_status": null,
      "extended_tracking_status": null,
      "amount": {
        "value": 12500,
        "currency": "EUR"
      },
      "currency": "EUR",
      "fees": [],
      "payment_date": "2026-10-14",
      "bank_reference": null,
      "chips_ssn": null,
      "details": []
    }
  ],
  "waiting_at": null,
  "free": null,
  "corrections_remaining": null
}
```

## 3. Add a transfer of your own

With a read and write key, add a transfer by its UETR, the 36-character reference on the payment confirmation, with the amount, currency and date it was sent:

```sh
curl -X POST "https://uetr.ai/api/v1/transfers" \
  -H "Authorization: Bearer $UETR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"uetr":"eb6305c9-1f7f-49de-aed0-16487c27b42d","amount":{"value":1500.5,"currency":"USD"},"payment_date":"2026-10-01"}'
```

The transfer starts while the banks are asked and is then checked automatically, as your plan checks transfers added on the website. Read it again with [Get a transfer](/docs/api/get-transfer), list every transfer with [List transfers](/docs/api/list-transfers), or let a [webhook](/docs/api/webhooks) tell you when it changes. Adding a UETR the account already holds returns that transfer.

## Next steps

- [Authentication](/docs/api/authentication): access levels, rotating and revoking keys.
- [Webhooks](/docs/api/webhooks): hear about changes instead of asking.
- [Errors](/docs/api/errors) and [rate limits](/docs/api/rate-limits): what a refusal means and when to try again.
- Connect Claude, ChatGPT or another AI app: [uetr.ai/mcp](https://uetr.ai/mcp).