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

# Является ли http тем же самым, что и HTTP/1.1?

> http/https отвечает за шифрование; HTTP/1.1 и HTTP/2 определяют, как в соединении передаются запросы. Это разные вещи. Большинству пользователей следует просто использовать https://api.apiyi.com.

## Краткий ответ

**Нет.** `http://` или `https://` определяет, **зашифрован ли трафик**. HTTP/1.1 или HTTP/2 — это **версия протокола**, которая определяет, как запросы передаются по соединению. Возможна любая их комбинация.

Почти всем пользователям следует просто использовать этот адрес и ничего не менять:

```text theme={null}
https://api.apiyi.com
```

## Два отдельных измерения

| Измерение                | Что определяет                              | Значения                                                                                                                                                                             |
| ------------------------ | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `http://` или `https://` | Шифруется ли трафик (с TLS или без)         | Открытый текст / зашифрованный                                                                                                                                                       |
| HTTP/1.1 или HTTP/2      | Как запросы передаются по одному соединению | HTTP/1.1: один запрос за раз на соединение, поэтому параллельные запросы означают больше соединений<br />HTTP/2: множество запросов используют одно соединение (мультиплексирование) |

Версия протокола **согласовывается между клиентом и сервером при установке соединения**. Она не определяется тем, как записан URL. Эндпоинт `https://` APIYI поддерживает как HTTP/1.1, так и HTTP/2 и использует тот протокол, который поддерживает ваш клиент.

Поэтому распространенное мнение о том, что «http означает HTTP/1.1, а https означает HTTP/2», является заблуждением:

* Для адресов `http://` популярные клиенты практически всегда используют HTTP/1.1, но это лишь совпадение результата
* Для адресов `https://` некоторые клиенты используют HTTP/1.1, а другие — HTTP/2, в зависимости от самого клиента

## Версия по умолчанию для распространенных клиентов (по https)

| Клиент                                                                                    | Версия по умолчанию                                                              |
| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Python `requests`, `httpx`, OpenAI Python SDK                                             | HTTP/1.1                                                                         |
| Node.js `axios`                                                                           | HTTP/1.1                                                                         |
| Встроенный в Node.js `fetch`, OpenAI Node SDK                                             | Node 25 и ранее: HTTP/1.1; **Node 26 и новее по умолчанию согласовывают HTTP/2** |
| Стандартная библиотека Go `net/http` (используется такими шлюзами, как new-api и one-api) | HTTP/2                                                                           |
| Java `HttpClient`, OkHttp                                                                 | HTTP/2                                                                           |
| curl, браузеры                                                                            | HTTP/2                                                                           |

Чтобы проверить, какую версию вы действительно используете, выполните curl:

```bash theme={null}
curl -s -o /dev/null -w "%{http_version}\n" https://api.apiyi.com/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"
# 2 means HTTP/2, 1.1 means HTTP/1.1
```

## Какой адрес использовать?

<Steps>
  <Step title="Конечные пользователи: используйте https и ничего не меняйте">
    Физические лица и компании, вызывающие API напрямую, должны использовать `https://api.apiyi.com`. Стандартные SDK для Python, Node и других языков отлично работают по умолчанию, без необходимости настройки протокола.
  </Step>

  <Step title="Клиенты на Go / Java с большим количеством параллельных запросов на загрузку изображений: оставьте https, отключите HTTP/2 в клиенте">
    HTTP/2 объединяет множество параллельных запросов в одном соединении. При загрузке изображений размером в несколько МБ любая заминка в этом соединении замедляет каждый проходящий по нему запрос. Если ваш клиент по умолчанию использует HTTP/2 и вы выполняете генерацию или редактирование изображений с большим количеством параллельных запросов, переключите клиент на HTTP/1.1. **Сохраняйте адрес https; переходить на http не требуется.**
  </Step>

  <Step title="http://api.apiyi.com:16888: только как резервный вариант">
    Это официально предоставляемый незашифрованный эндпоинт. Используйте его только в качестве временного решения, когда само рукопожатие HTTPS завершается ошибкой (например, [Python выдаёт SSLEOFError, но curl работает?](/ru/faq/openssl-pq-handshake-eof)), либо внутри доверенной внутренней сети или выделенной линии связи.
  </Step>
</Steps>

<Warning>
  `http://` не зашифрован. Ваш ключ API, prompts и изображения передаются по публичной сети в виде открытого текста и видны любому сетевому устройству на пути следования. Не полагайтесь на незашифрованный эндпоинт как на долгосрочное решение для продакшена.
</Warning>

### Как переключить клиент Go на HTTP/1.1

Вариант без изменения кода — установить переменную окружения для процесса. Это подходит для готовых программ-шлюзов, таких как new-api и one-api:

```bash theme={null}
GODEBUG=http2client=0
```

В собственном коде задайте для `Transport.TLSNextProto` не равную nil пустую map:

```go theme={null}
import (
    "crypto/tls"
    "net/http"
)

tr := &http.Transport{
    // A non-nil empty map disables HTTP/2, so https requests use HTTP/1.1
    TLSNextProto:        map[string]func(string, *tls.Conn) http.RoundTripper{},
    MaxIdleConnsPerHost: 100,
}
client := &http.Client{Transport: tr}
```

## Распространенные заблуждения

<AccordionGroup>
  <Accordion title="Быстрее ли http://?">
    Для клиентов, которые уже используют HTTP/1.1, таких как Python и Node, переход на http экономит всего одно рукопожатие TLS (долю секунды). Это ничтожно мало по сравнению со временем генерации изображений в десятки секунд, и при этом вы теряете шифрование.
  </Accordion>

  <Accordion title="Нужно ли переходить на http://, чтобы отключить HTTP/2?">
    Нет. HTTP/2 отключается на стороне клиента; см. пример для Go выше. В других языках есть аналогичные параметры. После этого продолжайте использовать `https://api.apiyi.com`, и вы получите HTTP/1.1 с шифрованием.
  </Accordion>

  <Accordion title="HTTP/2 — это плохо?">
    Нет. Для браузеров и обычных текстовых чатов, где запросы небольшие и многочисленные, повторное использование соединений в HTTP/2 экономит ресурсы. Единое мультиплексированное соединение становится узким местом только тогда, когда большое количество параллельных запросов сочетается с большими телами запросов или ответов.
  </Accordion>
</AccordionGroup>

## Связанная документация

* [Как настроить базовый URL?](/ru/faq/base-url-config)
* [Как снизить задержку API изображений?](/ru/faq/image-api-network-latency-optimization)
* [Python выдает SSLEOFError, но curl работает?](/ru/faq/openssl-pq-handshake-eof)
* [Скрипт получает 502, но в логах вызовов ничего нет?](/ru/faq/proxy-empty-502)
