OpenAI API из России, без VPN

Ключ к моделям GPT с оплатой картой РФ в рублях. Формат OpenAI Responses API: официальный SDK OpenAI и Codex CLI работают без переделки, меняются только адрес и ключ.

Запрос к OpenAI API через aprium на Python
main.py
from openai import OpenAI

client = OpenAI(
    base_url="https://api.aprium.ru/v1",
    api_key="ваш_ключ",
)
response = client.responses.create(
    model="gpt-6.1-sol",
    input="Привет! Чем ты можешь помочь?",
)
print(response.output_text)
Адрес API
https://api.aprium.ru/v1
Формат
OpenAI Responsesподходят официальные SDK
Модели
2 модели GPTодин ключ на все
Оплата
Картой РФ в рубляхбез подписки, за токены

Модели GPT в API

Модель выбирается полем model в запросе. Основная — GPT-6.1 Sol; на странице каждой модели — задачи, расход и советы.

Подключение OpenAI API

Примеры на GPT-6.1 Sol: для другой модели замените имя в поле model. Выберите задачу слева и язык над кодом.

Создать ключ
Адрес API
https://api.aprium.ru/v1
Модель
gpt-6.1-sol
Заголовок
Authorization: Bearer ключ

Подключение ключа

# pip install openai
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["APRIUM_API_KEY"],  # ключ: ai.aprium.ru/#keys
    base_url="https://api.aprium.ru/v1",
)

Перед запуском: export APRIUM_API_KEY="ваш_ключ". Или задайте OPENAI_BASE_URL и OPENAI_API_KEY — SDK прочитает их сам.

// npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.APRIUM_API_KEY, // ключ: ai.aprium.ru/#keys
  baseURL: "https://api.aprium.ru/v1",
});

Перед запуском: export APRIUM_API_KEY="ваш_ключ".

export APRIUM_API_KEY="ваш_ключ"

curl https://api.aprium.ru/v1/responses \
  -H "Authorization: Bearer $APRIUM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-6.1-sol", "input": "Проверка связи"}'

Если ключ верный, придёт ответ модели. Ошибка 401 значит, что ключ не указан или указан неверно.

Запрос с задачей

response = client.responses.create(
    model="gpt-6.1-sol",
    instructions="Отвечай по делу, без вступлений.",
    input="Составь план статьи про налоговый вычет за обучение",
)
print(response.output_text)
const response = await client.responses.create({
  model: "gpt-6.1-sol",
  instructions: "Отвечай по делу, без вступлений.",
  input: "Составь план статьи про налоговый вычет за обучение",
});
console.log(response.output_text);
curl https://api.aprium.ru/v1/responses \
  -H "Authorization: Bearer $APRIUM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "instructions": "Отвечай по делу, без вступлений.",
    "input": "Составь план статьи про налоговый вычет за обучение"
  }'

Получение результата

print(response.output_text)   # текст ответа
print(response.usage)         # input_tokens, cached_tokens, output_tokens, reasoning_tokens

# Ответ по частям, как в чате
stream = client.responses.create(
    model="gpt-6.1-sol",
    input="Расскажи про осень",
    stream=True,
)
for event in stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="", flush=True)
console.log(response.output_text); // текст ответа
console.log(response.usage);       // input_tokens, cached_tokens, output_tokens, reasoning_tokens

// Ответ по частям, как в чате
const stream = await client.responses.create({
  model: "gpt-6.1-sol",
  input: "Расскажи про осень",
  stream: true,
});
for await (const event of stream) {
  if (event.type === "response.output_text.delta") process.stdout.write(event.delta);
}
# По частям: "stream": true и -N, чтобы curl не копил вывод
curl -N https://api.aprium.ru/v1/responses \
  -H "Authorization: Bearer $APRIUM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-6.1-sol", "input": "Расскажи про осень", "stream": true}'

Текст приходит в событиях response.output_text.delta, остальные события можно пропускать.

Параметры генерации

response = client.responses.create(
    model="gpt-6.1-sol",
    instructions="Отвечай по делу, без вступлений.",
    max_output_tokens=4000,                # предел ответа вместе с рассуждением
    reasoning={"effort": "high"},       # low, medium, high, xhigh, max
    input="Сократи текст до трёх пунктов: ...",
)

Уровни рассуждения: low, medium, high, xhigh, max, по умолчанию medium. Рассуждение оплачивается как вывод.

const response = await client.responses.create({
  model: "gpt-6.1-sol",
  instructions: "Отвечай по делу, без вступлений.",
  max_output_tokens: 4000,                 // предел ответа вместе с рассуждением
  reasoning: { effort: "high" },        // low, medium, high, xhigh, max
  input: "Сократи текст до трёх пунктов: ...",
});

Уровни рассуждения: low, medium, high, xhigh, max, по умолчанию medium. Рассуждение оплачивается как вывод.

curl https://api.aprium.ru/v1/responses \
  -H "Authorization: Bearer $APRIUM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "instructions": "Отвечай по делу, без вступлений.",
    "max_output_tokens": 4000,
    "reasoning": {"effort": "high"},
    "input": "Сократи текст до трёх пунктов: ..."
  }'

Уровни рассуждения: low, medium, high, xhigh, max, по умолчанию medium. Рассуждение оплачивается как вывод.

Ответ в JSON

response = client.responses.create(
    model="gpt-6.1-sol",
    input="Город: Казань, население 1,3 млн",
    text={"format": {
        "type": "json_schema", "name": "city", "strict": True,
        "schema": {
            "type": "object",
            "properties": {"city": {"type": "string"}, "population_mln": {"type": "number"}},
            "required": ["city", "population_mln"],
            "additionalProperties": False,
        },
    }},
)
print(response.output_text)  # {"city":"Казань","population_mln":1.3}
const response = await client.responses.create({
  model: "gpt-6.1-sol",
  input: "Город: Казань, население 1,3 млн",
  text: { format: {
    type: "json_schema", name: "city", strict: true,
    schema: {
      type: "object",
      properties: { city: { type: "string" }, population_mln: { type: "number" } },
      required: ["city", "population_mln"],
      additionalProperties: false,
    },
  } },
});
console.log(JSON.parse(response.output_text));
curl https://api.aprium.ru/v1/responses \
  -H "Authorization: Bearer $APRIUM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "input": "Город: Казань, население 1,3 млн",
    "text": {"format": {"type": "json_schema", "name": "city", "strict": true,
      "schema": {"type": "object",
        "properties": {"city": {"type": "string"}, "population_mln": {"type": "number"}},
        "required": ["city", "population_mln"], "additionalProperties": false}}}
  }'

Картинки

import base64

with open("schet.png", "rb") as f:
    img = base64.b64encode(f.read()).decode()

response = client.responses.create(
    model="gpt-6.1-sol",
    input=[{
        "role": "user",
        "content": [
            {"type": "input_text", "text": "Выпиши сумму, дату и ИНН со счёта"},
            {"type": "input_image", "image_url": f"data:image/png;base64,{img}"},
        ],
    }],
)
print(response.output_text)

Можно передать и ссылку на картинку в интернете: image_url с адресом https://…

import { readFileSync } from "node:fs";

const img = readFileSync("schet.png").toString("base64");

const response = await client.responses.create({
  model: "gpt-6.1-sol",
  input: [{
    role: "user",
    content: [
      { type: "input_text", text: "Выпиши сумму, дату и ИНН со счёта" },
      { type: "input_image", image_url: `data:image/png;base64,${img}` },
    ],
  }],
});
console.log(response.output_text);
IMG=$(base64 < schet.png | tr -d '\n')

curl https://api.aprium.ru/v1/responses \
  -H "Authorization: Bearer $APRIUM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "input": [{"role": "user", "content": [
      {"type": "input_text", "text": "Выпиши сумму, дату и ИНН со счёта"},
      {"type": "input_image", "image_url": "data:image/png;base64,'"$IMG"'"}
    ]}]
  }'

Агенты и редакторы кода

GPT в привычном инструменте: укажите адрес aprium и ключ, остальное работает как с OpenAI напрямую. В примерах — GPT-6.1 Sol.

Codex CLI

Агент OpenAI для терминала

5 шагов
  1. Создайте ключ: Аккаунт → Ключи → «Создать ключ». Задайте имя, например codex, и скопируйте ключ.

  2. Установите Node.js 18 или новее с nodejs.org, затем Codex CLI:

    bash
    npm install -g @openai/codex

    Проверка: codex --version.

  3. Добавьте провайдера aprium в ~/.codex/config.toml (файла нет — создайте):

    config.toml
    model = "gpt-6.1-sol"
    model_provider = "aprium"
    model_reasoning_effort = "medium"
    
    [model_providers.aprium]
    name = "Aprium"
    base_url = "https://api.aprium.ru/v1"
    env_key = "APRIUM_API_KEY"
    wire_api = "responses"

    Уровень рассуждения меняется в model_reasoning_effort или командой /model в сессии.

  4. Сохраните ключ в переменной окружения. Чтобы не вводить каждый раз, добавьте строку в ~/.zshrc или ~/.bashrc:

    bash
    export APRIUM_API_KEY="ваш_ключ"
  5. Проверка

    Запустите codex в папке проекта и задайте простой вопрос, например «какие файлы в проекте?». Пришёл ответ, значит всё подключено.

    bash
    codex

OpenCode

Открытый агент для терминала

5 шагов
  1. Создайте ключ: Аккаунт → Ключи → «Создать ключ». Задайте имя, например opencode, и скопируйте ключ.

  2. Установите OpenCode:

    bash
    npm install -g opencode-ai
  3. Добавьте провайдера в opencode.json: в корне проекта или глобально в ~/.config/opencode/opencode.json.

    json
    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "aprium-gpt": {
          "npm": "@ai-sdk/openai",
          "name": "aprium GPT",
          "options": {
            "baseURL": "https://api.aprium.ru/v1",
            "apiKey": "{env:APRIUM_API_KEY}"
          },
          "models": {
            "gpt-6.1-sol": {
              "name": "GPT-6.1 Sol"
            },
            "gpt-6-astra": {
              "name": "GPT-6 Astra"
            },
            "gpt-5.5": {
              "name": "GPT-5.5"
            }
          }
        }
      }
    }

    Пакет @ai-sdk/openai ходит в Responses API — тот формат, который работает у GPT через aprium.

  4. Сохраните ключ в переменной окружения:

    bash
    export APRIUM_API_KEY="ваш_ключ"
  5. Проверка

    Запустите opencode, введите /models и выберите GPT-6.1 Sol в группе aprium GPT. Задайте вопрос: ответ пришёл, значит всё работает.

Ключ во всех примерах: ваш_ключ. Подставьте свой из Аккаунт → Ключи.

Перенос кода с api.openai.com

Если код уже работает с OpenAI напрямую, переделывать его не нужно: меняются три строки.

  1. Адрес

    Замените https://api.openai.com/v1 на https://api.aprium.ru/v1

    В SDK это base_url (Python) или baseURL (Node.js), либо переменная OPENAI_BASE_URL — тогда код не меняется вовсе.

  2. Ключ

    Вместо ключа OpenAI подставьте ключ aprium Authorization: Bearer

    Заголовок тот же. В SDK — api_key или переменная OPENAI_API_KEY. Ключ один на все модели.

  3. Модель

    Укажите модель из списка выше gpt-6.1-sol

    Работают текущие модели GPT из списка выше. Старые модели вроде gpt-4o вернут ошибку 404.

Справка

POST https://api.aprium.ru/v1/responses. Параметры тела запроса, разница между моделями и ответы с ошибкой.

Параметры

modelстрокаобязательный
Имя модели: gpt-6.1-sol, gpt-6-astra или gpt-5.5
inputстрока или массивобязательный
Задача: строка или сообщения с ролями. Картинки — блоками input_image
instructionsстрока
Правила для модели: роль, тон, формат ответа
max_output_tokensчисло
Предел ответа в токенах, вместе с рассуждением
reasoning.effortlow … max
Глубина рассуждения. У Sol и Astra — от low до max, у GPT-5.5 — от none до xhigh; по умолчанию medium
text.formatобъект
Ответ строго по JSON-схеме: {"type": "json_schema", …}
streamtrue или false
Получать ответ частями: текст — в событиях response.output_text.delta

Ошибки

400
Неверный запросПроверьте model и input. Уровень рассуждения должен быть из списка для этой модели
401
Нет доступаКлюч не указан или указан неверно. Ключ передаётся в заголовке Authorization: Bearer …
402
Закончился балансПополните баланс в Аккаунте, ключ менять не нужно
404
Нет такой моделиПроверьте имя модели по таблице моделей. Старые модели, например gpt-4o, не работают
429
Слишком частоПодождите и повторите запрос. Официальные SDK повторяют его сами
502, 503
Модель временно недоступнаПоставщик не отвечает. Повторите позже или переключитесь на другую модель GPT

Вопросы о OpenAI API

Ключ, оплата и подключение коротко.

Как получить API-ключ OpenAI в России?

Зарегистрируйтесь в aprium, пополните баланс картой РФ, откройте Аккаунт → Ключи и нажмите «Создать ключ». Ключ работает со всеми моделями GPT, VPN, зарубежная карта и аккаунт OpenAI не нужны.

Это ключ OpenAI?

Нет, это ключ aprium. Запросы с ним идут на https://api.aprium.ru/v1, а aprium передаёт их моделям GPT. Формат тот же, что у OpenAI Responses API, поэтому меняются только адрес и ключ.

Это ChatGPT?

ChatGPT — приложение OpenAI, а здесь те же модели GPT по API: для своего кода, ботов и агентов. Для переписки без программирования есть чат aprium в браузере, там можно выбрать любую модель GPT.

Сколько стоит GPT API?

Оплата за токены, без подписки. Вход стоит от $0,41 (≈ 34,52 ₽) за 1 млн токенов у GPT-6.1 Sol до $2,05 (≈ 173 ₽) у GPT-6 Astra. Все цены и калькулятор — на странице «Модели и цены».

Работает ли Chat Completions?

Основной формат для GPT в aprium — Responses API (/v1/responses): так работают официальный SDK OpenAI и Codex CLI. Запросы /v1/chat/completions для простых ответов тоже проходят, но вызов инструментов в этом формате у GPT-6.1 Sol не поддерживается, поэтому агентов подключайте через Responses.

Как оплатить?

Картой Мир, Visa или Mastercard в рублях. Подписки нет: с баланса списывается стоимость каждого запроса. Подробнее на странице «Оплата и тарифы».

Один ключ работает со всеми моделями?

Да. Один ключ aprium подходит для Claude, GPT и Gemini: модель выбирается полем model в каждом запросе. Можно завести несколько ключей для разных проектов, расход по каждому виден отдельно.

Подключите OpenAI API

Создайте ключ и подключите GPT к своему коду, агенту или редактору.

Получить API-ключ