Public API v1.3.1
Берите тексты и медиа. Меняйте как угодно.
Бесплатно, без ключей, регистрации, разрешения и обязательной атрибуции. Копируйте, переводите, обрезайте, смешивайте, публикуйте и используйте коммерчески. CC0 1.0 применяется ко всем правам, которыми CPA.TG может распоряжаться.
CC0 1.0CORS *GET / HEAD / RangeЦена: 0Атрибуция: не нужна
Самый простой способ
Вставьте это в 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/tombstones | ID удалённых записей для синхронизации |
https://cpa.tg/api/rumors/v1/snapshot-manifest.json | SHA-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.json | JSON 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 сайта.
Полное зеркало текстов и медиа
- Получите manifest и проверьте
size_bytesиsha256. - Скачивайте именно
files.*.url: URL содержитsnapshot_id, не меняется во время загрузки и доступен, пока хранятся два последних снимка. - Импортируйте JSON/NDJSON/CSV с upsert по
id. - Загрузите media manifest: в каждой строке есть стабильный ID, тип, размер и прямой
download_url. - Скачивайте файлы параллельно разумными пакетами; HEAD и byte Range поддерживаются.
- После
generated_atприменяйте/tombstones?since=....
Постраничный максимум — 50. cursor непрозрачен: берите links.next, не конструируйте его сами.
Поля записи
| Поле | Смысл |
|---|---|
id | стабильный ключ для upsert и удаления |
published_at | RFC 3339 / ISO 8601 |
text, summary | исходный текст и необязательное AI-резюме |
channel, source_url | происхождение и ссылка на оригинал |
media | ID, прямой URL, тип, MIME, размер и CC0/reuse-поля |
metrics | views, forwards, replies; значение может быть null |
reuse | цена 0, без ключа, без атрибуции, изменение и коммерческое использование разрешены |
links | self, 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.