Аутентификация

Получите токены доступа и настройте аутентификацию

Обзор аутентификации (API v3)

API WebAsk использует авторизацию по API‑ключу. Создайте ключ в личном кабинете и передавайте его в заголовке Authorization: Bearer YOUR_API_TOKEN во всех запросах к API v3.

API v3 использует Laravel Sanctum. Ключ имеет формат id|строка, например: 42|xK7mP9nQ2wL5eH8jR3vU6tY0iD4aF1bG.

Где получить API-ключ

  1. 1 Войдите в личный кабинет WebAsk
  2. 2 Перейдите в раздел Настройки → API или напрямую по ссылке app.webask.io/account/api
  3. 3 Нажмите «Сгенерировать API ключ», задайте название и скопируйте ключ — он показывается только один раз

Скачайте markdown‑версию раздела «Аутентификация» для использования в ChatGPT / других LLM:

Информация о текущем пользователе GET /api/v3/service/user

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

GET /api/v3/service/user
curl -X GET "https://api.webask.io/api/v3/service/user" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Использование Bearer‑токена

Добавьте токен в заголовок Authorization всех защищенных запросов к API v3:

GET /quiz
curl -X GET https://api.webask.io/api/v3/service/quiz \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json"

JavaScript (fetch)

fetch('https://api.webask.io/api/v3/service/quiz', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN',
    'Content-Type': 'application/json'
  }
})
.then(response => response.json())
.then(data => console.log(data));

Python (requests)

import requests

headers = {
    'Authorization': 'Bearer YOUR_TOKEN',
    'Content-Type': 'application/json'
}

response = requests.get('https://api.webask.io/api/v3/service/quiz', headers=headers)
data = response.json()

PHP (cURL)

$url = 'https://api.webask.io/api/v3/service/quiz';
$token = 'YOUR_TOKEN';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
    $data = json_decode($response, true);
    echo json_encode($data, JSON_PRETTY_PRINT);
} else {
    echo "Error: HTTP $httpCode";
}

PHP (Guzzle)

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

$client = new Client();
$token = 'YOUR_TOKEN';

try {
    $response = $client->get('https://api.webask.io/api/v3/service/quiz', [
        'headers' => [
            'Authorization' => 'Bearer ' . $token,
            'Content-Type' => 'application/json'
        ]
    ]);
    
    $data = json_decode($response->getBody(), true);
    echo json_encode($data, JSON_PRETTY_PRINT);
} catch (RequestException $e) {
    echo "Error: " . $e->getMessage();
}

Рекомендации по безопасности

Не делайте

  • Не передавайте токены в URL параметрах
  • Не коммитьте токены в публичные репозитории
  • Не передавайте токены в клиентском коде
  • Не используйте один токен для разных приложений

Рекомендуется

  • Используйте переменные окружения для хранения токенов
  • Регулярно ротируйте токены
  • Используйте HTTPS для всех запросов

Обработка ошибок аутентификации

Коды ошибок

Код Описание Решение
401 Неверный или отсутствующий токен Проверьте правильность токена в заголовке Authorization
403 Токен не имеет прав доступа Проверьте права доступа токена в настройках
429 Превышен лимит запросов Уменьшите частоту запросов или обновите тарифный план