API для партнёров
API для партнёров
Для интеграции вашей CRM/ERP с smetach.ru — программная загрузка цен без ручного ввода в дашборде.
База
| Параметр | Значение |
|---|---|
| Base URL | https://smetach.ru/partners/api/v1/ |
| Аутентификация | OAuth 2.0 через Яндекс ID |
| Формат | JSON (request и response) |
| Лимит | 1000 запросов/час на токен |
Аутентификация
GET https://oauth.yandex.ru/authorize?
response_type=code
&client_id=<ваш_client_id>
&redirect_uri=https://smetach.ru/partners/api/callback/
&scope=login:email+login:info+login:avatar
&state=<csrf_token>
После редиректа с ?code=<auth_code> обмениваете на токен:
curl -X POST https://oauth.yandex.ru/token \
-d "grant_type=authorization_code" \
-d "code=<auth_code>" \
-d "client_id=<your_client_id>" \
-d "client_secret=<your_client_secret>"
Получаете access_token — используете в Authorization: Bearer ... header.
Endpoints
GET /profile
Текущий профиль партнёра.
{
"yandex_id": "yandex-uid-xxx",
"company_name": "ООО Окна-Плюс",
"city": "rostov-na-donu",
"categories": ["okna", "uteplitel"],
"website": "https://oknaplus.ru",
"email": "info@oknaplus.ru",
"verified": true,
"created_at": "2026-07-30T15:00:00Z",
"updated_at": "2026-07-30T15:00:00Z"
}
PUT /profile
Обновить профиль (кроме yandex_id, verified).
GET /prices
Список цен по категориям и городам.
{
"okna": {
"rostov-na-donu": {
"profile_58mm_standart": {"price": 12000, "unit": "rub/m2"},
"profile_70mm_premium": {"price": 18500, "unit": "rub/m2"},
"installation": {"price": 2500, "unit": "rub/m2"}
},
"krasnodar": { ... }
},
"uteplitel": { ... }
}
PUT /prices/{category}/{city}
Обновить цены для конкретной категории в конкретном городе.
{
"profile_58mm_standart": {"price": 11500, "unit": "rub/m2"},
"profile_70mm_premium": {"price": 18000, "unit": "rub/m2"}
}
GET /stats
Статистика показов за период.
{
"from": "2026-07-01",
"to": "2026-07-31",
"impressions": 1247,
"clicks_to_profile": 89,
"clicks_to_website": 23
}
Webhooks
Можно подписаться на события:
price.published— ваши цены появились на сайтеstats.daily— ежедневная статистикаlead.received— пришла заявка от пользователя (Phase 2)
Webhook URL указывается в дашборде.
Коды ошибок
| Код | Описание |
|---|---|
| 400 | Невалидный JSON |
| 401 | Нет или невалидный токен |
| 403 | Не верифицированный аккаунт |
| 404 | Категория/город не найдены |
| 429 | Превышен rate limit |
| 500 | Внутренняя ошибка |
OpenAPI спецификация
Скачать OpenAPI 3.0 файл — содержит полную схему всех endpoints.
Примеры на разных языках
Python
import requests
TOKEN = "y0_Ag..."
r = requests.get(
"https://smetach.ru/partners/api/v1/prices",
headers={"Authorization": f"Bearer {TOKEN}"}
)
prices = r.json()
curl
curl -H "Authorization: Bearer y0_Ag..." \
https://smetach.ru/partners/api/v1/prices
Поддержка
support@smetach.ru — по вопросам интеграции.
Try it out (интерактивный playground)
Эта секция работает только когда вы залогинены через Яндекс ID. Токен сохранится в localStorage и используется для запросов.
Response
// нажмите "Send request" чтобы увидеть ответ
OpenAPI спецификация
Полная схема API в формате OpenAPI 3.0:
{
"openapi": "3.0.0",
"info": {
"title": "Smetach.ru Partners API",
"version": "1.0.0",
"description": "API для партнёров — управление ценами и статистика"
},
"servers": [{"url": "https://smetach.ru/partners/api/v1"}],
"components": {
"securitySchemes": {
"oauth2": {
"type": "oauth2",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://oauth.yandex.ru/authorize",
"tokenUrl": "https://oauth.yandex.ru/token",
"scopes": {
"login:email": "Email аккаунта Яндекс",
"login:info": "Публичные данные профиля",
"login:avatar": "URL аватара"
}
}
}
}
}
},
"paths": {
"/profile": {
"get": {
"summary": "Получить профиль партнёра",
"security": [{"oauth2": ["login:email login:info"]}],
"responses": {"200": {"description": "OK"}}
},
"put": {
"summary": "Обновить профиль партнёра",
"security": [{"oauth2": ["login:email login:info"]}],
"responses": {"200": {"description": "OK"}}
}
},
"/prices/{category}/{city}": {
"get": {"summary": "Получить цены категории в городе"},
"put": {"summary": "Обновить цены категории в городе"}
},
"/stats": {
"get": {
"summary": "Статистика за период",
"parameters": [
{"name": "from", "in": "query", "schema": {"type": "string", "format": "date"}},
{"name": "to", "in": "query", "schema": {"type": "string", "format": "date"}}
]
}
}
}
}