Public API v1.3.1

Берите тексты и медиа. Меняйте как угодно.

Бесплатно, без ключей, регистрации, разрешения и обязательной атрибуции. Копируйте, переводите, обрезайте, смешивайте, публикуйте и используйте коммерчески. CC0 1.0 применяется ко всем правам, которыми CPA.TG может распоряжаться.

CC0 1.0CORS *GET / HEAD / RangeЦена: 0Атрибуция: не нужна

Начать за минуту Можно всё: условия Для AI

Самый простой способ

Вставьте это в HTML, WordPress-блок «Произвольный HTML», Tilda HTML-блок или Webflow Embed:

<div id="cpa-rumors"></div>
<script async src="https://cpa.tg/assets/rumors-embed-v1.js" data-target="#cpa-rumors" data-limit="12"></script>

Фильтры виджета: data-channel, data-limit (1–50), data-title, data-target. Если конструктор запрещает внешний JavaScript, используйте RSS-блок или серверный JSON.

Выберите формат

Endpoints

URLНазначение
https://cpa.tg/api/rumors/v1/postsпосты: channel, entity, tag, sentiment, q, since, until, limit, cursor
https://cpa.tg/api/rumors/v1/posts/{id}одна запись
https://cpa.tg/api/rumors/v1/mediaмедиа: type, channel, post_id, limit, cursor
https://cpa.tg/api/rumors/v1/media/{id}одно медиа и прямой download_url
https://cpa.tg/api/rumors/v1/media/export.ndjsonпостраничный каталог медиа
https://cpa.tg/api/rumors/v1/channels/{slug}/postsлента канала
https://cpa.tg/api/rumors/v1/tombstonesID удалённых записей для синхронизации
https://cpa.tg/api/rumors/v1/snapshot-manifest.jsonSHA-256, размеры и URL всех полных снимков
https://cpa.tg/api/rumors/v1/license.jsonмашиночитаемое CC0-разрешение
https://cpa.tg/api/rumors/v1/license.mdпростое описание свободного использования
https://cpa.tg/api/rumors/v1/schema.jsonJSON Schema записи
https://cpa.tg/api/rumors/v1/openapi.jsonполный OpenAPI 3.1
https://cpa.tg/api/rumors/v1/agent.mdправила для любого AI-агента
https://cpa.tg/api/rumors/v1/healthсвежесть БД и снимков

JavaScript, Python, PHP и curl

const r = await fetch('https://cpa.tg/api/rumors/v1/posts?limit=20');
if (!r.ok) throw new Error(`API ${r.status}`);
const page = await r.json();
for (const post of page.data) console.log(post.text, post.source_url);
import requests
url = 'https://cpa.tg/api/rumors/v1/posts'
while url:
    page = requests.get(url, params={'limit': 50} if '?' not in url else None, timeout=20).json()
    for post in page['data']: print(post['id'], post['text'])
    url = page['links']['next']
<?php
$page = json_decode(file_get_contents('https://cpa.tg/api/rumors/v1/posts?limit=50'), true, 512, JSON_THROW_ON_ERROR);
foreach ($page['data'] as $post) echo htmlspecialchars($post['text'], ENT_QUOTES, 'UTF-8');
curl --compressed 'https://cpa.tg/api/rumors/v1/export.ndjson?limit=50'
curl -O 'https://cpa.tg/api/rumors/v1/snapshot.ndjson.gz'
curl -O 'https://cpa.tg/api/rumors/v1/media-manifest.ndjson.gz'

Скачать все медиа

import gzip, json, requests
with gzip.open('rumors-media-manifest.ndjson.gz', 'rt', encoding='utf-8') as rows:
    for line in rows:
        media = json.loads(line)
        with requests.get(media['download_url'], stream=True, timeout=60) as r:
            r.raise_for_status()
            # Сохраните поток под media['id']; Range позволяет продолжить загрузку.

Claude, Codex, ChatGPT и другие агенты

Передайте агенту URL https://cpa.tg/api/rumors/v1/agent.md или импортируйте OpenAPI как Action/Tool. Секреты и заголовки авторизации не нужны.

Прочитай https://cpa.tg/api/rumors/v1/agent.md и https://cpa.tg/api/rumors/v1/openapi.json.
Создай read-only интеграцию: импорт по id, обход links.next, ETag/304,
удаления через /tombstones и скачивание media.download_url с поддержкой Range.
Лицензия CC0, атрибуция и разрешение не требуются.

Для Claude Code или Codex можно сохранить skill.md в проект и поручить агенту реализовать адаптер. Агент должен использовать только GET/HEAD и не собирать HTML сайта.

Полное зеркало текстов и медиа

  1. Получите manifest и проверьте size_bytes и sha256.
  2. Скачивайте именно files.*.url: URL содержит snapshot_id, не меняется во время загрузки и доступен, пока хранятся два последних снимка.
  3. Импортируйте JSON/NDJSON/CSV с upsert по id.
  4. Загрузите media manifest: в каждой строке есть стабильный ID, тип, размер и прямой download_url.
  5. Скачивайте файлы параллельно разумными пакетами; HEAD и byte Range поддерживаются.
  6. После generated_at применяйте /tombstones?since=....

Постраничный максимум — 50. cursor непрозрачен: берите links.next, не конструируйте его сами.

Поля записи

ПолеСмысл
idстабильный ключ для upsert и удаления
published_atRFC 3339 / ISO 8601
text, summaryисходный текст и необязательное AI-резюме
channel, source_urlпроисхождение и ссылка на оригинал
mediaID, прямой URL, тип, MIME, размер и CC0/reuse-поля
metricsviews, forwards, replies; значение может быть null
reuseцена 0, без ключа, без атрибуции, изменение и коммерческое использование разрешены
linksself, channel_feed, source

Точный машиночитаемый контракт: JSON Schema.

Кеш, ошибки и совместимость

Сохраняйте ETag, отправляйте If-None-Match; 304 означает «без изменений». Ошибки — application/problem+json с code, detail, request_id. На 429/503 используйте exponential backoff с jitter. API v1 не меняет смысл существующих полей, но может добавлять необязательные; игнорируйте неизвестные поля.

GET, HEAD и OPTIONS разрешены без токена. POST, PUT, PATCH и DELETE запрещены.

Можно брать, менять и публиковать

CPA.TG не требует денег, регистрации, согласования или атрибуции. Мы применяем CC0 1.0 ко всем авторским, смежным и database-правам, которыми владеем или можем распоряжаться. Разрешены копирование, скачивание, хранение, перевод, редактирование, обрезка, ремикс, обучение моделей, повторная публикация и коммерческое использование.

Юридически никто не может отменить права, принадлежащие другому человеку. Поэтому CC0 от CPA.TG действует в максимально возможном объёме наших прав, но не отменяет возможные права авторов исходных каналов, людей в кадре, владельцев товарных знаков, права на частную жизнь и изображение. Материалы предоставляются «как есть» без гарантий. Полное простое описание.

Это лента публичных сообщений, новостей и слухов, а не гарантия достоверности. Не выдавайте сообщение за подтверждённый факт без независимой проверки. AI-summary всегда помечен summary_generated_by_ai.