Наша собственная статистика посещений включена всегда. Google Analytics помогает нам понять, как пользуются нашими публичными страницами (но не вашим рабочим пространством после входа), и включается только с вашего разрешения. См. нашу политику конфиденциальности.

API Odysee Посты пользователя

POST

Состояние API

Состояние за 24 ч
Норма
Среднее время за 24 ч
—
  • Стабильно / норма
  • Доступно
  • Ограничено
  • Почти недоступно
Норма

Просматривайте публикации канала на Odysee по имени, @имени или ссылке на канал с сортировкой по новизне или по популярности на основе поддержки. Для каждой публикации есть просмотры, лайки, длительность и теги. Всё после двоеточия (claim ID) отбрасывается, поэтому при совпадении имён проверяйте канал.

Возможность Odysee Posts by user выводит загрузки одного канала, заданного в username. Для каждой записи она возвращает название, описание, ссылку, миниатюру, длительность, просмотры, лайки, время публикации, тип медиа, языки и теги, а также имя, ID и ссылку канала. С её помощью можно следить за автором, который публикуется на Odysee, архивировать или проверять материалы канала, а также сравнивать то, что канал публикует там, с его публикациями на других площадках.

username принимает имя канала с @ или без него либо ссылку на канал, содержащую @name. Задайте в sort значение newest, чтобы получить порядок публикации, или popular, чтобы получить ранжирование, связанное с суммами поддержки каждой публикации. duration_seconds равно null для записей, которые не являются видео или аудио. Значение null в view_count или like_count означает нераскрытый показатель, и его нужно отличать от настоящего нуля.

Цена: $32 за 1 000 запросов ($0.032 за вызов). Неудачные вызовы и пустые результаты не оплачиваются. Синхронный режим. Для долгих задач добавьте в тело запроса "mode": "async", получите job_id и опрашивайте статус.

Промпт для ИИ

Помогите мне написать скрипт для сбора данных через эндпоинт EveryInfra Odysee Посты пользователя (odysee/user_posts).

Как работает эндпоинт:
- Запрос: POST https://api.everyinfra.com/api/v1/social с заголовком Authorization: Bearer <API key>. Читайте ключ из переменной окружения EVERYINFRA_API_KEY и никогда не прописывайте его в коде.
- В теле запроса укажите platform: odysee и action: user_posts, а параметры передайте в params.
- Обязательные параметры:
  - username: Идентификатор канала для действия user_posts. Принимает имя канала, @name или полный URL канала Odysee. Всё, что идёт после двоеточия (claim ID), отбрасывается, поэтому проверяйте результат, если имена каналов совпадают.
- Необязательные параметры:
  - sort: Сортирует контент в действиях user_posts и tag. Допустимые значения: newest (по дате публикации) и popular (по сумме поддержки). Учтите, что popular не учитывает общее число просмотров или лайков. (допустимые значения: newest / popular)
  - limit: Максимальное число записей в этом вызове, целое число от 1 до 200. Если параметр не указан, применяется значение по умолчанию; вызов может вернуть меньше записей. (по умолчанию: 20)
- Возвращает список записей. Основные поля каждой записи: id, title, description, channel_name, channel_id, channel_url, url, thumbnail_url, duration_seconds, duration_sec, view_count, like_count; всего полей: 16, полный список: https://api.everyinfra.com/api/v1/social/catalog?platform=odysee.
- Пример тела запроса:
{
  "platform": "odysee",
  "action": "user_posts",
  "params": {
    "username": "@lbry"
  }
}
- Цена: $32 за 1 000 запросов; неудачные и пустые результаты не оплачиваются.
- Для десятков или сотен целей добавьте в тело запроса "mode": "async": вы сразу получите job_id и сможете опрашивать GET https://api.everyinfra.com/api/v1/jobs/{job_id}, чтобы получить результат.
- При ответе 422 исправьте запрос, используя предложенные в ошибке имена параметров и допустимые значения; при ответе 429 или 503 подождите указанное в Retry-After время и повторите попытку.

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

Параметры запроса

ИмяРасположениеТипОбязательныйПо умолчаниюОписание
AuthorizationheaderstringДа-Укажите Bearer, а после него — ваш API-ключ. Создайте ключ в консоли; никогда не указывайте его в URL и не храните в репозитории кода.
platformbodystringДаodyseeИдентификатор платформы, фиксированное значение.
actionbodystringДаuser_postsИдентификатор возможности, фиксированное значение.
usernamebody.paramsstringДа-Идентификатор канала для действия user_posts. Принимает имя канала, @name или полный URL канала Odysee. Всё, что идёт после двоеточия (claim ID), отбрасывается, поэтому проверяйте результат, если имена каналов совпадают.
sortbody.paramsstring (enum)Нет-Сортирует контент в действиях user_posts и tag. Допустимые значения: newest (по дате публикации) и popular (по сумме поддержки). Учтите, что popular не учитывает общее число просмотров или лайков.Допустимые значенияnewestpopular
limitbody.paramsinteger (1–200)Нет20Максимальное число записей в этом вызове, целое число от 1 до 200. Если параметр не указан, применяется значение по умолчанию; вызов может вернуть меньше записей. При значениях выше максимума эндпоинт возвращает ошибку 422 до списания средств.

Примеры кода

bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "odysee",
  "action": "user_posts",
  "params": {
    "username": "@lbry"
  }
}'

Спецификация OpenAPI (JSON)Примеры читают ключ из переменной окружения EVERYINFRA_API_KEY; скопированный код никогда не содержит ваш ключ.

Пример ответа

Реальный ответ

Получено September 26, 2026 at 08:56 (UTC) вызовом этого API с параметрами из примера кода выше. results и count — реальный ответ этого вызова, из которого удалены персональные данные (имена, никнеймы, аватары, ссылки на профили, контакты); в списке оставлены первые 2. id, billing и quota меняются при каждом вызове, поэтому показана только их структура.

json
{
  "id": "req_…",
  "platform": "odysee",
  "action": "user_posts",
  "results": [
    {
      "id": "7aa2220e2d1d5942b90240dec25e925b11a8ea04",
      "title": "Odysee LBRY Usage Agreement",
      "channel_name": "@lbry",
      "channel_url": "https://odysee.com/@•••",
      "url": "https://odysee.com/@lbry/odyseelbryagreement",
      "thumbnail_url": "https://thumbs.odycdn.com/b18ae7090861d94d6c7081969e970348.webp",
      "published_at": "2023-10-19T20:01:10+00:00",
      "media_type": "application/pdf",
      "languages": [
        "en"
      ],
      "platform": "odysee"
    },
    {
      "id": "d434ed74a2a4874358eca22702dd25289d8fc1cd",
      "title": "The End of LBRY Inc.",
      "channel_name": "@lbry",
      "channel_url": "https://odysee.com/@•••",
      "url": "https://odysee.com/@lbry/theendoflbryinc",
      "thumbnail_url": "https://thumbs.odycdn.com/e9740b8e51f33735964d1cccbc53b70d.webp",
      "published_at": "2023-10-19T16:44:47+00:00",
      "media_type": "text/markdown",
      "languages": [
        "en"
      ],
      "tags": [
        "lbry"
      ],
      "platform": "odysee"
    }
  ],
  "count": 20,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}

Поля ответа

Бизнес-данные находятся в results. В таблице перечислены поля, которые может содержать запись; значения, которые платформа не показывает, никогда не выдумываются.

ПолеЗначение
idУникальный ID записи на платформе. Уникален только в пределах одной платформы; на разных платформах ID могут повторяться.
titleЗаголовок. null, если на платформе нет заголовков (например, у текстовых постов).
descriptionКраткое содержание или описание, обычно короче text.
channel_nameТрактуется так же, как на самой платформе
channel_idТрактуется так же, как на самой платформе
channel_urlТрактуется так же, как на самой платформе
urlСсылка на запись на платформе.
thumbnail_urlСсылка на миниатюру с более низким разрешением, чем у image_url.
duration_secondsДлительность в секундах. null для контента, который не является видео или аудио.
duration_secТрактуется так же, как на самой платформе
view_countПросмотры или воспроизведения. null означает, что значение не раскрыто, а не 0.
like_countЛайки. null означает, что платформа или эта возможность не раскрывает значение; это не 0.
published_atТрактуется так же, как на самой платформе
media_typeТрактуется так же, как на самой платформе
languagesТрактуется так же, как на самой платформе
tagsМассив тегов. Если тегов нет, это пустой массив, а не null.
platformИдентификатор исходной платформы. Совпадает со значением platform в запросе (например, xiaohongshu, tiktok).

FAQ

Что можно передать в username?

Передайте имя канала в формате name или @name либо ссылку на канал Odysee, содержащую @name. Например, lbry и @lbry указывают на один и тот же канал. Передавайте один канал за вызов и используйте channel_id из результатов как ключ для сохраняемых данных.

popular означает «самые просматриваемые»?

Нет. popular ранжирует публикации по показателю, связанному с суммами поддержки, которые они получили на Odysee, а не по просмотрам или лайкам. Чтобы ранжировать публикации по показателям аудитории, запросите данные с newest и самостоятельно отсортируйте записи по view_count или like_count.

Как оставить только публикации на одном языке?

Фильтруйте по languages, где перечислены языки контента каждой публикации, и по media_type, чтобы отделить видео от других форматов. Если у публикации нет тегов, tags содержит пустой массив, а не null, поэтому по этому полю тоже можно безопасно фильтровать.

Ошибки и оплата

401
Ключ отсутствует или недействителен.
402
Недостаточно средств на балансе. Сначала пополните баланс.
422
Недопустимое имя или значение параметра. Исправьте запрос по подсказкам в сообщении об ошибке. Без списания.
429
Достигнут лимит запросов в минуту. Подождите указанное в Retry-After время, затем повторите попытку.
503
Не удалось выполнить. Зарезервированная сумма возвращается на баланс. Если результат неизвестен, проверьте его перед повторной попыткой.
200 (пусто)
Нет данных. Без списания.

Ошибки

Официальные источники

Используются только для проверки объектов и терминов. Они не означают, что платформа разрешила или одобрила работу EveryInfra.

  • Odysee: чем имя канала отличается от идентификатора Claim ↗

    В документации Odysee об именовании отмечается, что часть URL после двоеточия относится к Claim конкретного канала или отдельного материала, и для различения адресов с одинаковыми именами нужны полные идентификаторы. При извлечении имени канала этот API отбрасывает эту часть; ссылка на документацию не означает поддержки точных запросов по Claim.

    Проверено 2026-09-04