Source: https://cryptanio.com/ru/wiki/api-key-project-access/
Language: ru

# Как ограничить API\-ключ одним проектом

Создайте отдельный ключ для серверной сверки инвойсов одного проекта\: выберите проект\, чтение и нужный раздел API\, настройте IP и срок действия\, затем проверьте границу доступа\.

Обновлено: 2026-11-14

API\-ключ можно привязать к одному проекту Cryptanio\. Разберём процесс сверки заказов\, который должен читать [инвойсы](<https://cryptanio.com/ru/wiki/chto-takoe-invois/>) интернет\-магазина\, но не получать данные остальных проектов аккаунта\. Для него нужен отдельный ключ\: связь с проектом определяет область данных\, а права и разделы API — допустимые операции\.

Ни название ключа\, ни номер проекта в вашем приложении сами по себе не ограничивают доступ\. Ограничение нужно сохранить в политике ключа\. Доступ действует для публичного API v1\; ключ не является паролем для входа в кабинет\.

## 1\. Подготовьте проект и права {#section-f6614966743d8d55}

Нужны права владельца или администратора аккаунта и существующий активный проект с услугой «Платежи»\. Сначала убедитесь\, что его название и назначение вам понятны\: выбор неправильного проекта может дать корректный ключ с неподходящей областью доступа\.

Откройте «API\-ключи»\. В форме «Создание API\-ключа» задайте «Название»\, например «Сверка магазина»\. Отдельное имя помогает отличать серверные процессы\, но фактическую защиту задают следующие поля\.

## 2\. Выберите режим и конкретный проект {#section-32f71ad0674f3ecc}

Для чтения реальных инвойсов выберите «Рабочий режим» в поле «Режим»\. Ключ должен соответствовать режиму данных\, которые запрашивает ваш сервер\.

В поле «Проект» выберите нужный проект вместо «Все проекты»\. Кабинет показывает подсказку об ограничении услугой выбранного проекта\. Привязка к проекту и доступ к услуге применяются вместе\: ключ не включает услугу и не расширяет её возможности сам по себе\.

## 3\. Оставьте только чтение инвойсов {#section-4de473028ee19b1b}

В поле «Доступ» выберите «Только чтение»\. В «Разделы API» оставьте «Инвойсы» и снимите остальные отметки\, если процессу они не нужны\. Для обычной сверки состояния счёта не требуется управление адресами\, вебхуками или симуляцией\.

Если другой сервер должен создавать инвойсы\, ему потребуется «Чтение и запись» и соответствующий раздел\. Выделите ему отдельный ключ с понятным назначением\, не расширяя права процесса сверки без необходимости\. Доступ на запись действует внутри выбранных разделов\, а не открывает весь API\.

## 4\. Настройте IP и срок действия {#4-ip}

В «Разрешённые IP\-адреса» укажите исходящие публичные IP вашего сервера либо необходимые диапазоны CIDR\, по одному в строке\. Нужен адрес\, с которого запрос приходит к API\, а не IP покупателя\. При использовании хостинга или прокси уточните фактический выходной адрес\.

Пустое поле разрешает любой IP\. Если сервер использует несколько выходных адресов\, учитывайте их при настройке\; иначе правильный ключ может не пройти проверку\. IP\-ограничение дополняет выбор проекта и разделов\, а не заменяет их\.

При необходимости задайте «Срок действия»\. Выбранная дата действует до конца дня по UTC\. Согласуйте её со сроком работы интеграции\: истёкший ключ не является признаком того\, что клиент не заплатил\.

## 5\. Создайте ключ и сохраните секрет {#section-ef76eccee75eef5a}

Нажмите «Создать ключ» и выполните подтверждение защиты\, если кабинет его запросит\. Скопируйте секрет из показанного окна и сохраните на сервере процесса сверки\. Не помещайте его в клиентский JavaScript\, платёжную ссылку\, переписку с покупателем или публичный журнал\.

После закрытия окна не рассчитывайте восстановить секрет из списка\: там показано сокращённое обозначение ключа\. Проверьте «Область доступа»\, проект\, доступные разделы\, срок и статус\. Если нужен доступ разработчику\, передавайте его через подходящее защищённое хранилище\, а не публикуйте ключ вместе с инструкцией\.

## 6\. Проверьте разрешённый и запрещённый доступ {#section-d3188b2cce569bcf}

С сервера с разрешённым IP прочитайте известный инвойс этого проекта\. Ниже — пример чтения из каталога API\; используйте собственный ID инвойса и созданный ключ\:

```bash
#!/usr/bin/env bash
set -euo pipefail
: "${CRYPTANIO_RESOURCE_ID:?Set CRYPTANIO_RESOURCE_ID}"
: "${CRYPTANIO_API_KEY:?Set CRYPTANIO_API_KEY}"
urlencode() {
  local LC_ALL=C text="$1" char index
  for ((index=0; index<${#text}; index++)); do
    char="${text:index:1}"
    case "$char" in [a-zA-Z0-9.~_-]) printf '%s' "$char" ;; *) printf '%%%02X' "'$char" ;; esac
  done
}
response_file="$(mktemp)"
trap 'rm -f "$response_file"' EXIT
transfer_status=0
http_status="$(curl \
  --silent --show-error --max-time 30 --request GET \
  --header "Authorization: Bearer $CRYPTANIO_API_KEY" \
  --header 'Accept: application/json' \
  "https://api.cryptanio.com/v1/invoices/$(urlencode "$CRYPTANIO_RESOURCE_ID")" \
  --output "$response_file" --write-out '%{http_code}')" || transfer_status=$?
if [[ "$http_status" == 2?? ]]; then
  cat "$response_file"
  exit "$transfer_status"
fi
printf 'HTTP %s\n' "$http_status" >&2
cat "$response_file" >&2
exit 1
```

[Скачать пример](</wiki/examples/ae4ad34d7f9814c6019ca3494a7e6c605b0f2488e3bd223a4a4ce34ae8c220da.sh>)

Затем проверьте границу на известном инвойсе другого вашего проекта\: его данные не должны возвращаться\. Списки также должны оставаться в выбранном проекте\. Для этого ключа создание и изменение инвойсов запрещены\, даже если раздел «Инвойсы» включён\. Организация дальнейшей сверки описана в [руководстве по проверке оплаты через API](<https://cryptanio.com/ru/wiki/proverit-oplatu-api-bez-webhook/>)\.

Если запрос не проходит\, проверьте проект\, режим\, IP\, срок и разрешения\. Не делайте вывод о неоплате по одной ошибке доступа и не подставляйте вместо ограниченного ключа общий ключ аккаунта\. Платёж оценивается по состоянию [инвойса](<https://cryptanio.com/ru/wiki/chto-takoe-invois/>)\.

## Как уточнить доступ позже {#section-cedfa8d8c6c2e290}

У существующего ключа нажмите «Доступ»\, измените проект\, разделы\, IP или срок и выберите «Сохранить доступ»\. Режим выбирается при создании ключа\. «Заменить ключ» меняет секрет и сразу отключает прежний\; «Отозвать» прекращает его использование\. Перед заменой подготовьте обновление серверных клиентов\, чтобы сверка заказов не остановилась\.

Теги: [Платежи](https://cryptanio.com/ru/wiki/tag/payments/), [API](https://cryptanio.com/ru/wiki/tag/api/)

## Связанные статьи

- [Что такое инвойс](https://cryptanio.com/ru/wiki/chto-takoe-invois/)
- [Как проверить оплату через API без webhook](https://cryptanio.com/ru/wiki/proverit-oplatu-api-bez-webhook/)
- [Как принимать оплату в USDC на своём сайте](https://cryptanio.com/ru/wiki/usdc-payments-website/)
