История транзакций

Пагинированная история всех транзакций баланса: пополнения, списания за API, бонусы, возвраты.

GET
/billing/transactions

Authorization

AuthorizationRequiredBearer <token>

API ключ для аутентификации. Передавайте в заголовке Authorization: Bearer sk-...

In: header

Query Parameters

limitinteger

Количество записей на страницу

Default: 20Minimum: 1Maximum: 100
offsetinteger

Смещение

Default: 0Minimum: 0
typestring

Фильтр по типу: credit (пополнение) или debit (списание)

Value in: "credit" | "debit"
reasonstring

Фильтр по причине транзакции

Value in: "payment" | "api_usage" | "registration_bonus" | "verification_bonus" | "bonus_expired" | "refund"
fromstring

Начало периода (ISO 8601, inclusive)

Format: "date-time"
tostring

Конец периода (ISO 8601, inclusive)

Format: "date-time"

Response Body

Список транзакций

successboolean
dataobject

Ошибка валидации запроса. Тело запроса не соответствует схеме или содержит невалидные значения.

Поле errors содержит детализацию по каждому невалидному полю.

successRequiredboolean
errorRequiredobject
errorsarray<object>

Детализация ошибок валидации (при code=VALIDATION_ERROR)

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

КодПричинаЧто делать
MISSING_API_KEYЗаголовок Authorization отсутствуетДобавьте Authorization: Bearer sk-...
INVALID_AUTH_FORMATНеверный формат заголовкаИспользуйте формат Bearer sk-...
INVALID_API_KEYКлюч не найден в системеПроверьте ключ в личном кабинете
API_KEY_INACTIVEКлюч деактивированАктивируйте ключ в личном кабинете
API_KEY_EXPIREDСрок действия ключа истёкСоздайте новый ключ
successRequiredboolean
errorRequiredobject
errorsarray<object>

Детализация ошибок валидации (при code=VALIDATION_ERROR)

Превышен лимит запросов для вашего тарифа. Повторите запрос через время, указанное в заголовке Retry-After.

Лимиты зависят от тарифа (см. раздел Тарифы в личном кабинете).

successRequiredboolean
errorRequiredobject
errorsarray<object>

Детализация ошибок валидации (при code=VALIDATION_ERROR)

curl -X GET "/api/v1/billing/transactions?limit=20&offset=0&type=credit&reason=payment&from=2019-08-24T14%3A15%3A22Z&to=2019-08-24T14%3A15%3A22Z" \
  -H "Authorization: Bearer <token>"
fetch("/api/v1/billing/transactions?limit=20&offset=0&type=credit&reason=payment&from=2019-08-24T14%3A15%3A22Z&to=2019-08-24T14%3A15%3A22Z", {
  headers: {
    "Authorization": "Bearer <token>"
  }
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "/api/v1/billing/transactions?limit=20&offset=0&type=credit&reason=payment&from=2019-08-24T14%3A15%3A22Z&to=2019-08-24T14%3A15%3A22Z"

  req, _ := http.NewRequest("GET", url, nil)
  req.Header.Add("Authorization", "Bearer <token>")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "/api/v1/billing/transactions?limit=20&offset=0&type=credit&reason=payment&from=2019-08-24T14%3A15%3A22Z&to=2019-08-24T14%3A15%3A22Z"

response = requests.request("GET", url, headers = {
  "Authorization": "Bearer <token>"
})

print(response.text)
{
  "success": true,
  "data": {
    "transactions": [
      {
        "id": 1234,
        "amount": "150.00",
        "type": "debit",
        "balance_type": "real",
        "reason": "api_usage",
        "description": "API: transcription_priority (3 × 6₽)",
        "reference_id": "task_abc123",
        "balance_before": "15380.50",
        "balance_after": "15230.50",
        "created_at": "2019-08-24T14:15:22Z"
      }
    ],
    "pagination": {
      "total": 156,
      "limit": 20,
      "offset": 0
    }
  }
}

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request body"
  },
  "errors": [
    {
      "field": "url",
      "message": "Укажите url или input"
    }
  ]
}

{
  "success": false,
  "error": {
    "code": "MISSING_API_KEY",
    "message": "API key is required. Pass it in Authorization header: Bearer sk-..."
  }
}

{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Try again in 12 seconds"
  }
}