Public API GeTxt
Базовое API работает без ключа. API-ключ, выданный администратором, открывает доверенный режим: полный HTML и бессрочные публикации.
Базовый URL
https://getxt.online/api/v1
Создать записку
POST /api/v1/shares
Content-Type: application/json
{
"content": "# Заголовок\n\nТекст записки",
"ttl": "1h",
"password": "",
"burn_after": null
}
Поле ttl принимает значения 1h,
1d, 7d, 30d. Поле
password можно не задавать или передать пустой
строкой. Поле burn_after можно передать числом
от 1 до 1000 или null. Без API-ключа
публикация всегда обрабатывается как Markdown, а срок
хранения обязателен.
Доверенный режим с API-ключом
POST /api/v1/shares
Content-Type: application/json
X-API-Key: gxt_your_key
{
"content": "<style>.hero{color:red}</style><section class=\"hero\">HTML</section>",
"format": "html",
"permanent": true,
"password": "",
"burn_after": null
}
Вместо X-API-Key можно использовать
Authorization: Bearer gxt_your_key. При
format: "html" HTML сохраняется и отдается без
серверной очистки: стили, медиа-контент, iframe и другие
HTML-возможности доступны только для валидного ключа.
Бессрочная публикация через permanent: true
также доступна только с ключом.
Оформление HTML через API
HTML-режим предназначен для доверенных интеграций: лендингов,
красивых статей, промо-страниц, отчетов, вставок видео,
аудио, iframe и кастомной верстки. Чтобы включить режим,
обязательно передайте валидный API-ключ и
"format": "html".
{
"content": "полный HTML-код",
"format": "html",
"ttl": "30d",
"permanent": false,
"password": "",
"burn_after": null
}
content- HTML-строка до 512 КБ.format- для полного HTML укажитеhtml.ttl- срок хранения:1h,1d,7d,30d.permanent-trueсоздает бессрочную записку; работает только с API-ключом.password- необязательный пароль на просмотр.burn_after- число от 1 до 1000, если записка должна сгореть после заданного количества успешных открытий.
Если указан permanent: true, поле
ttl можно не передавать. Если
permanent не указан или равен
false, нужен обычный ttl.
Что можно использовать в HTML
- Любые HTML-теги:
section,article,main,header,footer,div,span, таблицы и формы. - Встроенные стили через
<style>и inline-стили через атрибутstyle. - Медиа:
img,video,audio,source,picture. - Встраивания:
iframe,embed,object. - SVG, canvas, data-атрибуты, классы, id и ARIA-атрибуты.
Сервер не скачивает и не хранит внешние медиа-файлы. Если в HTML указаны ссылки на картинки, видео или iframe, браузер пользователя будет загружать их с указанных URL.
Пример: статья с CSS
curl -s https://getxt.online/api/v1/shares \
-H 'Content-Type: application/json' \
-H 'X-API-Key: gxt_your_key' \
--data '{
"format": "html",
"ttl": "30d",
"content": "<style>body{margin:0}.article{max-width:760px;margin:0 auto;padding:48px 24px;font:18px/1.7 system-ui}.article h1{font-size:44px;line-height:1.1}</style><article class=\"article\"><h1>Заголовок</h1><p>Красиво оформленный текст.</p></article>"
}'
Пример: медиа и iframe
curl -s https://getxt.online/api/v1/shares \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer gxt_your_key' \
--data '{
"format": "html",
"permanent": true,
"password": "secret",
"content": "<main style=\"max-width:900px;margin:40px auto;font-family:system-ui\"><h1>Медиа-страница</h1><img src=\"https://example.com/image.jpg\" alt=\"Preview\" style=\"max-width:100%;border-radius:12px\"><video src=\"https://example.com/video.mp4\" controls style=\"width:100%;margin-top:24px\"></video><iframe src=\"https://example.com/embed\" style=\"width:100%;height:420px;border:0;margin-top:24px\"></iframe></main>"
}'
Рекомендации по верстке
- Добавляйте стили внутрь
<style>, чтобы записка не зависела от CSS сайта. - Используйте адаптивные размеры:
max-width,width:100%,height:auto. - Для изображений задавайте
alt, для iframe - понятныйtitle. - Не рассчитывайте на глобальные классы сайта: HTML должен быть самодостаточным.
- Не вставляйте секреты, приватные токены и персональные данные в HTML.
Гайд: как попасть в стиль сайта
Публичная страница GeTxt использует темную минималистичную тему. Чтобы HTML-записка не выглядела чужеродно, задавайте те же базовые цвета и не используйте светлый фон на весь экран.
<style>
:root {
color-scheme: dark;
}
body {
margin: 0;
background: #0d0f12;
color: #eceff3;
font: 16px/1.65 Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.page {
width: min(860px, calc(100% - 32px));
margin: 0 auto;
padding: 44px 0 72px;
}
.panel {
border: 1px solid #2a3038;
border-radius: 8px;
background: #13161b;
padding: 24px;
}
h1, h2, h3 {
color: #f4f7fb;
line-height: 1.15;
}
p, li {
color: #d8dde5;
}
.muted {
color: #8f98a6;
}
a {
color: #9fc5ff;
text-underline-offset: 3px;
}
</style>
Основная палитра сайта:
#0d0f12 для фона,
#13161b для блоков,
#181c22 для более заметных блоков,
#eceff3 для текста,
#8f98a6 для вторичного текста,
#2a3038 для границ,
#7aa7ff для акцентов и ссылок.
Шаблон красивой HTML-записки
<style>
:root { color-scheme: dark; }
body {
margin: 0;
background: #0d0f12;
color: #eceff3;
font: 16px/1.65 Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.page {
width: min(860px, calc(100% - 32px));
margin: 0 auto;
padding: 44px 0 72px;
}
.eyebrow {
margin: 0 0 12px;
color: #8f98a6;
font-size: 14px;
}
.hero {
padding-bottom: 28px;
border-bottom: 1px solid #2a3038;
}
.hero h1 {
max-width: 760px;
margin: 0;
color: #f4f7fb;
font-size: clamp(32px, 6vw, 56px);
line-height: 1.05;
}
.lead {
max-width: 720px;
margin: 18px 0 0;
color: #cbd2dc;
font-size: 19px;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 12px;
margin: 28px 0;
}
.card {
border: 1px solid #2a3038;
border-radius: 8px;
background: #13161b;
padding: 18px;
}
.card h2 {
margin: 0 0 8px;
color: #f4f7fb;
font-size: 18px;
}
.card p {
margin: 0;
color: #aeb7c4;
}
pre {
overflow: auto;
border: 1px solid #2a3038;
border-radius: 8px;
background: #090b0f;
padding: 16px;
}
code {
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
img, video, iframe {
max-width: 100%;
border: 1px solid #2a3038;
border-radius: 8px;
background: #13161b;
}
</style>
<main class="page">
<section class="hero">
<p class="eyebrow">Заметка GeTxt</p>
<h1>Заголовок красивой HTML-страницы</h1>
<p class="lead">Короткое вступление, которое объясняет суть материала и выглядит нативно в темной теме сайта.</p>
</section>
<section class="grid">
<article class="card">
<h2>Первый блок</h2>
<p>Краткое описание, факт или тезис.</p>
</article>
<article class="card">
<h2>Второй блок</h2>
<p>Еще один аккуратный блок в стиле сайта.</p>
</article>
</section>
<pre><code>print("code block")</code></pre>
</main>
Что лучше не делать
- Не ставьте
body { background: white; }, если не хотите отдельную светлую страницу внутри темного сайта. - Не используйте слишком большие скругления: базовый радиус сайта - около
8px. - Не делайте весь экран ярким градиентом; лучше оставлять темный фон и использовать акцент только точечно.
- Не задавайте фиксированную ширину вроде
width: 1200px; на телефонах она сломает просмотр. - Не полагайтесь на внешние шрифты, если важна скорость открытия. Системный стек уже выглядит нормально.
Безопасность HTML-режима
Полный HTML не очищается сервером. Это означает, что администратор должен выдавать API-ключи только доверенным интеграциям. Если ключ больше не нужен или мог попасть к третьим лицам, отзовите его в админ-панели.
Ответ
{
"id": "Ab12Cd",
"url": "https://getxt.online/Ab12Cd",
"expires_at": 1770000000,
"burn_after": null,
"password_required": false,
"owned": false,
"content_type": "markdown",
"api_key": false
}
Получить мета-информацию
GET /api/v1/shares/Ab12Cd/meta
{
"id": "Ab12Cd",
"password_required": false,
"created_at": 1769996400,
"expires_at": 1770000000,
"burn_after": null,
"remaining_views": null
}
Прочитать записку
POST /api/v1/shares/Ab12Cd/read
Content-Type: application/json
{
"password": ""
}
Для записки без пароля можно передать пустой объект
{}. Успешное чтение увеличивает счетчик
просмотров и может сжечь записку, если включен лимит
открытий.
Ответ чтения
{
"id": "Ab12Cd",
"content": "# Заголовок\n\nТекст записки",
"content_type": "markdown",
"html": "<h1>Заголовок</h1>\n<p>Текст записки</p>",
"created_at": 1769996400,
"expires_at": 1770000000,
"burn_after": null,
"remaining_views": null,
"burned": false
}
Ошибки
400 bad_json | empty_content | bad_ttl | bad_burn_after | bad_content_type
401 bad_password | bad_api_key
404 not_found
413 too_large
503 id_generation_failed | key_generation_failed
Пример curl
curl -s https://getxt.online/api/v1/shares \
-H 'Content-Type: application/json' \
--data '{"content":"hello\nworld","ttl":"1h"}'
Пример curl с ключом
curl -s https://getxt.online/api/v1/shares \
-H 'Content-Type: application/json' \
-H 'X-API-Key: gxt_your_key' \
--data '{"content":"<video src=\"/demo.mp4\" controls></video>","format":"html","permanent":true}'