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

# Moove API Keys

> Создайте ограниченный API-ключ для Moove API, скопируйте его один раз и навсегда отзовите, когда закончите.

Создайте ключ, скопируйте один раз, используйте для вызова Moove API.

<Info>
  **Только веб**, на [moove.xyz/dashboard/api-keys](https://www.moove.xyz/dashboard/api-keys). Мобильного аналога нет.
</Info>

## Как создать API-ключ?

<Steps>
  <Step title="Откройте Управление → API-ключи">
    В веб-панели управления.
  </Step>

  <Step title="Дайте ему имя">
    Такое, чтобы узнать через полгода — сервис или окружение, для которого он.
  </Step>

  <Step title="Выберите агента">
    **Moove Receive Agent** — единственный существующий. Он раскрывается в те разрешения, которые нужны этому агенту.
  </Step>

  <Step title="Скопируйте ключ">
    <Warning>
      Открытый ключ показывается **один раз**, при создании. Скопируйте его сейчас и сохраните в менеджере секретов. Закроете окно без копирования — и ключ станет непригодным; создайте новый.
    </Warning>
  </Step>
</Steps>

Базовый URL — `https://api.moove.xyz`.

## Moove Agents, а не «сырые» разрешения

Вы выбираете **агента**, а не строку разрешений. «Moove Receive Agent» — единица, о которой продавец может рассуждать; `payment_link:create` — нет.

| Агент                   | Статус      | Какие разрешения даёт                      |
| ----------------------- | ----------- | ------------------------------------------ |
| **Moove Receive Agent** | **Активен** | `payment_link:create`, `payment_link:read` |
| Moove Send Agent        | Скоро       | —                                          |
| Moove Swap Agent        | Скоро       | —                                          |
| Moove Ramp Agent        | Скоро       | —                                          |

Три будущих агента отображаются неактивными. Выбор любого из них создал бы ключ, который ничего не даёт, поэтому селектор этого не позволяет.

## Что API-ключ может и чего не может

<Note>
  Ключ — это **урезанная версия вас**. Он действует как ваш аккаунт и может делать лишь подмножество того, что можете вы.

  **Ни один эндпоинт не перемещает средства.** Платёжная ссылка всегда рассчитывается в ваш собственный кошелёк по умолчанию, в токене этого кошелька — вызывающая сторона не может указать назначение. Утёкший ключ может создавать запросы, которые платят *вам*. Заплатить кому-то другому он не может.
</Note>

Ключ также не может создать другой ключ. Управление ключами аутентифицируется только сессией, поэтому скомпрометированный ключ не может расширить сам себя.

## Как хранить ключ в безопасности?

<Warning>
  * Храните его в менеджере секретов или переменной окружения. Никогда — в системе контроля версий.
  * Никогда не вставляйте его в промпт, чат, issue или скриншот.
  * Используйте отдельный ключ на каждый сервис, чтобы отзыв одного не обрушил остальные.
  * Отзывайте любой ключ, в котором сомневаетесь. Создать новый — дело секунд.
</Warning>

## Сколько ключей может быть?

До **10 активных ключей** на аккаунт. Создадите одиннадцатый — запрос будет отклонён с `TOO_MANY_API_KEYS`; сначала отзовите тот, которым больше не пользуетесь.

<Tip>
  Этот потолок — повод ограничивать ключи по интеграциям, а не по деплоям. Один ключ на каждый реально работающий сервис проще понимать и проще отозвать, когда что-то меняется.
</Tip>

## Как отозвать ключ?

<Steps>
  <Step title="Откройте меню ключа">
    В **Управление → API-ключи** откройте меню **…** в строке ключа и выберите **Отозвать**.
  </Step>

  <Step title="Подтвердите">
    Нажмите **Отозвать** ещё раз для подтверждения. Ключ немедленно перестаёт работать.
  </Step>
</Steps>

<Warning>
  **Отзыв необратим.** Отменить его нельзя. Открытый текст никогда не хранился, поэтому отозванный ключ невозможно использовать снова, даже если запись восстановят. Вместо этого выпустите новый ключ.
</Warning>

## Как использовать ключ?

Отправляйте его в заголовке `X-API-Key` в каждом запросе.

```bash theme={null}
curl -sS -X POST "https://api.moove.xyz/v1/payment-link" \
  -H "X-API-Key: $MOOVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "toAmount": "49.99" }'
```

[Authentication →](/api-reference/authentication)

## Перед первым вызовом

API отказывается создавать ссылки для аккаунта, который не может принимать платежи. Убедитесь, что вы заняли [Moove Handle](/ru-ru/brand/moove-handle) и задали кошелёк по умолчанию с [токеном расчёта](/ru-ru/concepts/settlement-and-auto-routing) — иначе получите `409`.

## Что читать дальше

<CardGroup cols={3}>
  <Card title="Authentication" icon="lock" href="/api-reference/authentication">
    Как работает заголовок.
  </Card>

  <Card title="Moove Agentic Payments" icon="sparkles" href="/ru-ru/transact/moove-agentic-payments">
    Пусть интеграцию сделает ИИ-инструмент.
  </Card>

  <Card title="API Moove Payment Links" icon="link" href="/api-reference/moove-receive/moove-payment-links">
    Эндпоинты целиком.
  </Card>
</CardGroup>

Ограниченный, отзываемый, ваш. Ваши деньги. Ваш ход.
