API
Документация API
API WS24 позволяет авторизованным пользователям программно получать доступ к своим задачам и управлять ими. Все запросы к API должны быть аутентифицированы с использованием ключа API, передаваемого в заголовках запроса.
Аутентификация
Формат ключа API
ws24_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Использование ключа API
Добавляйте ваш ключ API в заголовок X-API-Key для всех запросов:
curl -H "X-API-Key: ws24_live_your_key_here" https://ws24.dev/api/v1/tasks
Управление ключами API
- Просмотр ключей: Перейдите на страницу Профиля → раздел API Keys
- Создание ключа: Нажмите "Create API Key" и укажите название
- Сохранение ключа: Полный ключ отображается только один раз при создании
- Удаление ключа: Используйте кнопку удаления рядом с ключом в профиле
Важно:
Каждый пользователь может иметь только один активный ключ API одновременно.
Лимиты запросов (Rate Limiting)
- Лимит: 500 запросов в минуту на один ключ API
- Ответ: При превышении лимита вы получите ответ
429 Too Many Requests - Заголовки: Информация о лимитах передается в заголовках ответа
{
"error": "Rate limit exceeded",
"message": "Too many requests. Rate limit: 500 requests per minute",
"retryAfter": 45
}
Эндпоинты
Список задач
Запрос: GET /api/v1/tasks
Параметры запроса (опционально): status, page, limit, sort, order
curl -H "X-API-Key: ws24_live_your_key_here" "https://ws24.dev/api/v1/tasks?status=in_progress&page=1&limit=10&sort=created_at&order=desc"
{
"tasks": [
{
"id": 123,
"title": "Website redesign",
"description": "Update homepage with new branding",
"status": "in_progress",
"budget": "1000",
"deadline": "2025-12-31",
"createdAt": "2025-11-01T10:00:00Z",
"updatedAt": "2025-11-10T15:30:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 45,
"totalPages": 5
}
}
Получить задачу по ID
Запрос: GET /api/v1/tasks/:id
curl -H "X-API-Key: ws24_live_your_key_here" https://ws24.dev/api/v1/tasks/123
{
"task": {
"id": 123,
"title": "Website redesign",
"description": "Update homepage with new branding",
"status": "in_progress",
"budget": "1000",
"deadline": "2025-12-31",
"clientId": "user_123",
"specialistId": "specialist_456",
"createdAt": "2025-11-01T10:00:00Z",
"updatedAt": "2025-11-10T15:30:00Z"
}
}
Создать задачу
Запрос: POST /api/v1/tasks
Заголовки: Content-Type: application/json, X-API-Key: your_api_key
curl -X POST -H "X-API-Key: ws24_live_your_key_here" -H "Content-Type: application/json" -d '{
"title": "Mobile app development",
"description": "Develop iOS app for our service",
"budget": "5000",
"deadline": "2025-12-31"
}' https://ws24.dev/api/v1/tasks
{
"message": "Task created successfully",
"task": {
"id": 124,
"title": "Mobile app development",
"description": "Develop iOS app for our service",
"status": "created",
"budget": "5000",
"deadline": "2025-12-31",
"createdAt": "2025-11-11T10:00:00Z"
}
}
Обновить задачу
Запрос: PUT /api/v1/tasks/:id
curl -X PUT -H "X-API-Key: ws24_live_your_key_here" -H "Content-Type: application/json" -d '{
"status": "completed",
"description": "Task completed successfully"
}' https://ws24.dev/api/v1/tasks/123
{
"message": "Task updated successfully",
"task": {
"id": 123,
"status": "completed",
"updatedAt": "2025-11-11T16:30:00Z"
}
}
Добавить обновление/комментарий
Запрос: POST /api/v1/tasks/:id/updates
curl -X POST -H "X-API-Key: ws24_live_your_key_here" -H "Content-Type: application/json" -d '{
"content": "Work in progress, 50% completed",
"type": "comment"
}' https://ws24.dev/api/v1/tasks/123/updates
{
"message": "Update added successfully",
"update": {
"id": 456,
"taskId": 123,
"content": "Work in progress, 50% completed",
"type": "comment",
"createdAt": "2025-11-11T14:00:00Z"
}
}
Коды ответов и ошибки
{
"error": "Error type",
"message": "Human-readable error message",
"details": []
}
- 200 OK: Запрос выполнен успешно
- 201 Created: Ресурс успешно создан
- 400 Bad Request: Некорректные параметры запроса
- 401 Unauthorized: Неверный или отсутствующий ключ API
- 403 Forbidden: Недостаточно прав
- 404 Not Found: Ресурс не найден
- 429 Too Many Requests: Превышен лимит запросов
- 500 Internal Server Error: Ошибка сервера
Рекомендации (Best Practices)
- Безопасность ключа: Никогда не используйте ключ API в клиентском коде или публичных репозиториях
- Обработка лимитов: Используйте экспоненциальную задержку (backoff) при получении ответов 429
- Пагинация: Всегда используйте пагинацию для списков для повышения производительности
- Обработка ошибок: Всегда корректно обрабатывайте ошибки в вашем приложении
- Обновление ключей: Периодически меняйте ключи API для повышения безопасности
Примеры кода
Пример на Python
import requests
API_KEY = "ws24_live_your_key_here"
BASE_URL = "https://ws24.dev/api/v1"
headers = {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
}
# Получение задач
response = requests.get(f"{BASE_URL}/tasks", headers=headers)
tasks = response.json()
# Создание задачи
new_task = {
"title": "New project",
"description": "Project description",
"budget": "2000"
}
response = requests.post(f"{BASE_URL}/tasks", headers=headers, json=new_task)
created_task = response.json()
Пример на JavaScript (Node.js)
const axios = require('axios');
const API_KEY = 'ws24_live_your_key_here';
const BASE_URL = 'https://ws24.dev/api/v1';
const headers = {
'X-API-Key': API_KEY,
'Content-Type': 'application/json'
};
// Получение задач
async function getTasks() {
try {
const response = await axios.get(`${BASE_URL}/tasks`, { headers });
console.log(response.data);
} catch (error) {
console.error('Error:', error.response.data);
}
}
// Создание задачи
async function createTask() {
try {
const response = await axios.post(`${BASE_URL}/tasks`, {
title: 'New project',
description: 'Project description',
budget: '2000'
}, { headers });
console.log(response.data);
} catch (error) {
console.error('Error:', error.response.data);
}
}
Пример на cURL
#!/bin/bash
API_KEY="ws24_live_your_key_here"
BASE_URL="https://ws24.dev/api/v1"
# Получение задач
curl -H "X-API-Key: $API_KEY" "$BASE_URL/tasks"
# Создание задачи
curl -X POST \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "New project",
"description": "Project description",
"budget": "2000"
}' \
"$BASE_URL/tasks"
Поддержка
- Email: hello@ws24.pro
- Платформа: Создайте тикет через панель управления WS24 Dev
История изменений
Версия 1.0 (Ноябрь 2025)
- Первоначальный релиз API
- Эндпоинты задач (список, получение, создание, обновление)
- Эндпоинт обновлений/комментариев к задачам
- Аутентификация по ключу API
- Ограничение частоты запросов (500 req/min)