Вход Регистрация

API

Документация открытого API

Чтобы перенести открытые данные блога Goxost на свой сайт или в приложение. Зарегистрируйтесь, получите ключ в кабинете и начинайте.

Начало

API работает только на чтение: все запросы — GET, данные возвращаются в JSON. Базовый адрес:

https://goxost.net/api/public/v1
Попробовать можно и без ключа — до 50 запросов в сутки.

Ключ и права

Ключ можно передать двумя способами, оба работают одинаково:

Authorization: Bearer gx_a1B2c3D4e5F6g7H8i9J0k1L2m3N4o5P6

X-Api-Key: gx_a1B2c3D4e5F6g7H8i9J0k1L2m3N4o5P6
Не передавайте ключ в адресной строке (?api_key=) — он попадёт в историю браузера и в логи сервера.

К каждому ключу привязаны права. Если нужного права нет, ответ будет 403:

Право Что открывает
blog:read Статьи — Список опубликованных статей и их полный текст
taxonomy:read Категории и теги — Списки категорий и тегов с количеством статей
authors:read Авторы — Открытые данные авторов: имя, имя пользователя и аватар

Лимиты

Одновременно действуют два лимита:

Кто В сутки
Без ключа (по IP) 50
С ключом 100
С ключом (администратор) 1000
Минутный 30 запросов в минуту
Дневной лимит привязан к пользователю, а не к ключу — несколько ключей его не увеличивают.

Состояние лимита возвращается в заголовках каждого ответа:

X-Quota-Limit: 100
X-Quota-Used: 37
X-Quota-Remaining: 63
X-Quota-Reset: 1786579199

Формат ответа

Все ответы имеют одинаковый вид. Успешный ответ:

{
  "success": true,
  "data": { }
}

При ошибке:

{
  "success": false,
  "message": "Статья не найдена."
}

В эндпоинтах со списками данные о страницах лежат в meta:

{
  "success": true,
  "data": {
    "items": [ ],
    "meta": { "page": 1, "per_page": 15, "last_page": 4, "total": 52 }
  }
}

Эндпоинты

GET /api/public/v1

Краткая справка об API: доступные эндпоинты, права и лимиты.

Параметры

Без параметров

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

{
    "success": true,
    "data": {
        "name": "Goxost ochiq API",
        "version": "v1",
        "endpoints": [
            "GET /posts",
            "GET /categories",
            "…"
        ]
    }
}
GET /api/public/v1/me

Состояние вашего ключа: какие у него права и сколько квоты израсходовано сегодня.

Параметры

Без параметров

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

{
    "success": true,
    "data": {
        "key": {
            "name": "Saytim uchun",
            "prefix": "gx_a1B2c3D4",
            "scopes": [
                "blog:read"
            ]
        },
        "quota": {
            "limit": 100,
            "used": 37,
            "remaining": 63
        }
    }
}
GET /api/public/v1/posts blog:read

Список опубликованных статей. Можно фильтровать по категории, тегу, автору и искать по тексту.

Параметры

Параметр Тип Описание
category string Slug категории. Берётся из /categories.
tag string Тег. Вместо пробела можно использовать дефис.
author string Имя пользователя автора (username).
q string Поисковый запрос. Ищет по заголовку, описанию и тегам.
sort string Сортировка: new (по умолчанию), old, popular.
per_page integer Записей на странице. От 1 до 50, по умолчанию 15.
page integer Номер страницы, начиная с 1.

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

{
    "success": true,
    "data": {
        "items": [
            {
                "slug": "hosting-tanlash",
                "title": "Hosting tanlashda nimaga qarash kerak",
                "description": "Qisqacha tavsif…",
                "cover": "https://goxost.net/posters/1.webp",
                "views": 1240,
                "tags": [
                    "hosting",
                    "maslahat"
                ],
                "category": {
                    "name": "Hosting",
                    "slug": "hosting"
                },
                "author": {
                    "name": "Xurshidbek",
                    "username": "xurshid"
                },
                "url": "https://goxost.net/uz/post/hosting-tanlash",
                "published_at": "2026-08-01T10:00:00+05:00"
            }
        ],
        "meta": {
            "page": 1,
            "per_page": 15,
            "last_page": 4,
            "total": 52
        }
    }
}
GET /api/public/v1/posts/{slug} blog:read

Полный текст одной статьи. HTML отдаётся очищенным в целях безопасности.

Параметры

Параметр Тип Описание
slug string Slug статьи — поле slug из списка.

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

{
    "success": true,
    "data": {
        "slug": "hosting-tanlash",
        "title": "Hosting tanlashda nimaga qarash kerak",
        "content": "<p>Maqola matni…</p>",
        "tags": [
            "hosting"
        ],
        "seo": {
            "meta_title": "…",
            "meta_description": "…"
        },
        "published_at": "2026-08-01T10:00:00+05:00"
    }
}
GET /api/public/v1/categories taxonomy:read

Все категории и количество опубликованных статей в каждой.

Параметры

Без параметров

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

{
    "success": true,
    "data": [
        {
            "name": "Hosting",
            "slug": "hosting",
            "posts_count": 24,
            "url": "https://goxost.net/uz/category/hosting"
        }
    ]
}
GET /api/public/v1/tags taxonomy:read

Список тегов, отсортированный по количеству статей.

Параметры

Без параметров

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

{
    "success": true,
    "data": [
        {
            "name": "hosting",
            "slug": "hosting",
            "posts_count": 31,
            "url": "https://goxost.net/uz/tags/hosting"
        }
    ]
}
GET /api/public/v1/authors authors:read

Авторы с опубликованными статьями. Только открытые данные: имя, имя пользователя, аватар.

Параметры

Параметр Тип Описание
per_page integer Записей на странице. От 1 до 50, по умолчанию 15.
page integer Номер страницы, начиная с 1.

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

{
    "success": true,
    "data": {
        "items": [
            {
                "name": "Xurshidbek",
                "username": "xurshid",
                "avatar": "https://goxost.net/avatars/x.webp",
                "posts_count": 12
            }
        ],
        "meta": {
            "page": 1,
            "per_page": 15,
            "last_page": 1,
            "total": 3
        }
    }
}
GET /api/public/v1/authors/{username} authors:read

Открытые данные одного автора.

Параметры

Параметр Тип Описание
username string Имя пользователя автора.

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

{
    "success": true,
    "data": {
        "name": "Xurshidbek",
        "username": "xurshid",
        "avatar": "https://goxost.net/avatars/x.webp",
        "posts_count": 12
    }
}

Ошибки

Код Когда
400 Неверный параметр запроса (например, слишком большой per_page).
401 Ключ недействителен или отозван.
403 У ключа нет нужного права.
404 Запрошенная статья или автор не найдены.
422 Параметры не прошли проверку — причина в поле errors.
429 Лимит исчерпан: дневная квота или минутный лимит.
500 Непредвиденная ошибка сервера. Если повторяется — напишите нам.

Примеры

В примерах ниже подставьте свой ключ вместо gx_….

curl -H "Authorization: Bearer gx_a1B2c3D4e5F6g7H8i9J0k1L2m3N4o5P6" \
     -H "Accept: application/json" \
     "https://goxost.net/api/public/v1/posts?per_page=5&sort=popular"
Есть вопрос или предложение — напишите через раздел поддержки в кабинете.