API Documentation
Base URL: https://steamsmm.ru/api
Authentication
Create an API key in your account. For all requests to protected methods, pass the key in the Authorization header. Send POST request bodies as JSON.
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
Request Example
curl "https://steamsmm.ru/api/user/balance" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
Key Management
| Method | Purpose | Authorization |
|---|---|---|
POST /api/token/generate | Create a key. Optional field: name. | Active website session |
POST /api/token/refresh | Replace the current key with a new one. Optional field: password. | Bearer token |
GET /api/token/list | Get a list of your keys without secret values. | Bearer token |
Boosting
The common /order/price and /order/create methods are used to calculate and create standard orders.
Available Service Types
action_type | Service | Required Link |
|---|---|---|
comment | +rep comments | Steam profile with public comments |
comment_rep | -rep comments | Steam profile with public comments |
comment_random | Random comments | Steam profile with public comments |
comment_premium | Delayed premium comments | Steam profile with public comments |
like | Likes | Supported Steam Community page |
dis | Dislikes | Supported Steam Community page |
subscribe | Group members | Steam group link |
review | Review likes | Steam review link |
favorite | Add to favorites | Workshop item URL |
workshop_subscribe | Workshop followers | Workshop profile URL |
curator_subscribe | Curator followers | Curator page URL |
Common Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
action_type | string | Yes | Service code from the table above. |
quantity | integer | Yes | Number of actions: 10 to 2,000. |
target_link | string | On creation only | Full link to the required steamcommunity.com page. |
POST /api/order/price - price calculation
POST /api/order/price
{
"action_type": "comment",
"quantity": 100
}
This method does not charge the balance. The response returns price_per_item, total_cost and currency.
POST /api/order/create - create order
POST /api/order/create
{
"action_type": "comment",
"quantity": 100,
"target_link": "https://steamcommunity.com/id/username"
}
Premium Comments
Three additional parameters are available for comment_premium. If omitted, the comment type is random, and the delay range is 5 to 720 minutes.
| Parameter | Type | Required | Allowed Values |
|---|---|---|---|
comment_variant | string | No | plus, minus or random. Default: random. |
delay_min_minutes | integer | No | Minimum delay, at least 5 minutes. |
delay_max_minutes | integer | No | Maximum delay, no more than 720 minutes and no less than delay_min_minutes. |
POST /api/order/create
{
"action_type": "comment_premium",
"quantity": 50,
"target_link": "https://steamcommunity.com/id/username",
"comment_variant": "plus",
"delay_min_minutes": 10,
"delay_max_minutes": 30
}
Successful Response
{
"status": "success",
"data": {
"order_id": "API_1_...",
"action_type": "comment_premium",
"quantity": 50,
"cost": 100.0,
"status": "processing",
"balance_after": 900.0
}
}
Steam Awards
Send awards to a Steam profile or content page. The service determines the target type and distributes award types automatically.
The price is calculated for your account and may include a personal rate or rank discount. Funds are charged from the balance when the order is created.
POST /api/order/price - price calculation
{
"action_type": "reward_pack",
"quantity": 10
}
Example response:
{
"status": "success",
"data": {
"action_type": "reward_pack",
"quantity": 10,
"price_per_item": 1.00,
"total_cost": 10.00,
"currency": "RUB"
}
}
POST /api/order/create - purchase
{
"action_type": "reward_pack",
"quantity": 10,
"target_link": "https://steamcommunity.com/profiles/76561198000000000"
}
| Parameter | Type | Required | Description |
|---|---|---|---|
action_type | string | Yes | reward_pack |
quantity | integer | Yes | Award quantity, 1–2000. Types are distributed automatically. |
target_link | string | Yes | Steam profile or content URL. The type is detected automatically. |
Check status: GET /api/order/status/{order_id}.
Steam Gifts API V2
Create and pay Steam game gifts from your SteamSMM balance. All prices are in RUB.
GET /api/v2/stock
Service schema and availability. in_stock is the number of purchasable package-region offers; price is the minimum indicative RUB price.
GET /api/v2/steam_gift/get_apps
Game catalog with all exposed sub_id packages, their regions and RUB prices. The response is streamed JSON and can be gzip-compressed; read it to completion.
POST /api/v2/order/price
{"sub_id": 100, "region": "ru"}
POST /api/v2/create_order
{
"service_id": 394,
"custom_id": "937220ca-5a1b-4838-a0ba-4cb3c7dedf8c",
"fields": [
{"key": "region", "value": "ru"},
{"key": "sub_id", "value": 100},
{"key": "friendLink", "value": "https://s.team/p/abc-defg/12345678"},
{"key": "giftName", "value": "Подарок"},
{"key": "giftDescription", "value": ""}
]
}
Creates an unpaid reservation for 15 minutes. custom_id must be a unique UUID4. Up to 10 unpaid reservations are allowed.
A confirmed reservation returns HTTP 201 with status created. An uncertain result returns HTTP 202 with status in_progress; reconcile it through order_info before payment.
POST /api/v2/pay_order
{"custom_id": "937220ca-5a1b-4838-a0ba-4cb3c7dedf8c"}
Charges regular balance and starts delivery. Possible statuses: completed, in_progress, refunded, failed or insufficient. Do not retry payment after a timeout; poll order_info.
GET /api/v2/order_info/{custom_id}
Statuses: 0 created, 10 in progress, 2 completed, 7 refunded, 5 failed. Poll every 30–60 seconds.
GET /api/v2/check_balance
Returns total balance, regular_balance and promo_balance in RUB. Steam Gifts use regular_balance only.
POST /api/v2/steam/check_user
{"steam_id": "steam_login"}Optional login lookup. It does not validate friendLink or gift delivery and is not required before create_order.
CS2 Commends
friendly, teacher and leader are set separately. The price is based on the highest value. A 15/5/10 combination costs the same as 15 commends.
Before creating an order, the player must join the 185.9.145.248:24673 server. Promotional balance cannot be used.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
target | string | For validation and creation | SteamID64 or a profile link. The steam_id and target_link fields are also accepted. |
friendly | integer | No | Number of Friendly commends. Default: 0. |
teacher | integer | No | Number of Teacher commends. Default: 0. |
leader | integer | No | Number of Leader commends. Default: 0. |
At least one value must be greater than zero. The highest of the three values must be between 15 and 7,500.
POST /api/commend/check - player validation
POST /api/commend/check
{"target": "https://steamcommunity.com/id/username"}
Check the data.on_server field. You can create an order only when it is true.
POST /api/commend/price - price calculation
POST /api/commend/price
{
"friendly": 15,
"teacher": 5,
"leader": 10
}
The response contains bots_required, price_per_bot, total_cost and the applied volume discount.
POST /api/commend/create - creation
POST /api/commend/create
{
"target": "76561198000000000",
"friendly": 15,
"teacher": 5,
"leader": 10
}
On success, the response returns order_id, session_id, the normalized steam_id, commend counts, cost, status, and remaining balance. You can also create an order through POST /api/order/create with action_type: "commend_cs2".
Status and Logs
GET /api/commend/{order_id}?logs_limit=100
logs_limit is optional; the allowed range is 1 to 200. The response contains progress, completed and failed bot counts, the remote status, and logs.
Order statuses
| SteamSmm status | Fulfillment status | Meaning |
|---|---|---|
pending | QUEUED | Waiting for the player, a free proxy, or execution to start. |
processing | running | Commends are being delivered. |
paused | paused | The player left the server. Processing resumes automatically after return. |
completed | done | The order is completed. |
failed | failed | A terminal execution error occurred. |
cancelled | canceled | The order was cancelled through the order cancellation action. |
Poll status every 5–10 seconds. pending and paused orders continue automatically; no separate restart request is required.
DELETE /api/commend/{order_id} — cancel order
This is the only customer action that stops an active commend order. The unfinished part is refunded after cancellation is confirmed.
Steam Accounts
Steam accounts have a dynamic catalog and inventory. Always retrieve the current category_id immediately before calculating or purchasing.
GET /api/autoreg/products - catalog
GET /api/autoreg/products
Authorization: Bearer YOUR_API_TOKEN
Products are located in data.groups.*.items. Each product includes:
| Field | Description |
|---|---|
category_id | Product identifier used for calculation and purchase. |
title, region, description | Product title, region, and description. |
stock | Current inventory. |
min_count, max_count | Allowed quantity per request. |
price_per_item | Price per account in rubles. |
POST /api/autoreg/price - price calculation
POST /api/autoreg/price
{
"category_id": 2450503,
"quantity": 10
}
category_id and quantity are required and must be integers. The method checks current inventory and does not charge the balance.
POST /api/autoreg/create - purchase and delivery
POST /api/autoreg/create
{
"category_id": 2450503,
"quantity": 10
}
Accounts are delivered directly in the response through the data.accounts array and the data.accounts_text string. The response also returns a download_url for a TXT file.
{
"status": "success",
"data": {
"order_id": "APIAUTOREG_...",
"ordered_quantity": 2,
"quantity": 2,
"status": "completed",
"accounts": ["login:password:email:email_password"],
"accounts_text": "login:password:email:email_password",
"balance_after": 500.0
}
}
warning field.Purchasing is also supported through POST /api/order/create with action_type: "steam_autoreg", category_id and quantity.
Steam Account Rentals
Rent online Steam accounts using your API balance. All prices and charges are in RUB. Send the API token in the Authorization header.
GET /api/rentals/products - catalog
GET /api/rentals/products
The response contains data.products: games, availability and hourly prices; data.currency is RUB.
Common Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | integer | Yes | Game ID from the rental catalog. |
duration_hours | integer | Yes | Rental duration in hours. |
idempotency_key | string | On creation only | Unique purchase key. Reuse it only when retrying the same order. |
POST /api/rentals/calculate-price - price calculation
POST /api/rentals/calculate-price
{
"product_id": 1,
"duration_hours": 24
}
POST /api/rentals/rent - purchase
POST /api/rentals/rent
{
"product_id": 1,
"duration_hours": 24,
"idempotency_key": "rental-client-order-001"
}
Creation returns HTTP 201 and data.rental_id, product_id, hours, amount, currency, status, starts_at and ends_at. An identical retry returns HTTP 200 with idempotent_replay: true.
POST /api/rentals/{rental_id}/extend
POST /api/rentals/{rental_id}/extend
{
"duration_hours": 24,
"idempotency_key": "rental-extension-001"
}
Extends your own active rental and charges the regular API account balance. Promo balance is not used. A new extension returns HTTP 201; an identical retry returns HTTP 200 with idempotent_replay: true.
GET /api/rentals/{rental_id}/status
Returns the rental status, starts_at and ends_at.
GET /api/rentals/{rental_id}/credentials
Returns access details for your own active rental.
GET /api/rentals/{rental_id}/guard-code
Returns the Steam Guard code in data.code. Frequent requests are rate-limited.
Errors
| Code | Description |
|---|---|
PRODUCT_NOT_FOUND | Game unavailable. |
INVALID_DURATION | Invalid rental duration. |
NO_STOCK | No accounts available. |
IDEMPOTENCY_CONFLICT | Key reused with different parameters. |
INVALID_IDEMPOTENCY_KEY | Invalid idempotency key. |
INSUFFICIENT_BALANCE | Insufficient regular balance. |
EXTENSION_IN_PROGRESS | Another extension is already in progress. |
EXTENSION_CONFLICT / EXTENSION_REJECTED | Extension was not applied; retry with the same key. |
RENTAL_REJECTED | Rental rejected; see message. |
CREDENTIALS_UNAVAILABLE / RENTAL_ENDED | Rental access ended or unavailable. |
RATE_LIMITED | Steam Guard request limit exceeded. |
Minecraft Capes
Keys are delivered immediately. Specify the product using a current catalog category_id or cape_type: home or builder.
GET /api/minecraft/capes/products - catalog
GET /api/minecraft/capes/products
data.items returns category_id, cape_type, the title, inventory, allowed quantity, and price per key.
POST /api/minecraft/capes/price - price calculation
POST /api/minecraft/capes/price
{"cape_type": "builder", "quantity": 3}
POST /api/minecraft/capes/create - purchase
POST /api/minecraft/capes/create
{"cape_type": "home", "quantity": 1}
Specify quantity and one of these fields: cape_type or category_id. On success, the keys are returned in the data.keys array and the data.keys_text string.
Purchasing is also supported through POST /api/order/create with action_type: "minecraft_cape".
Orders and Balance
GET /api/order/status/{order_id}
Returns the order type, target, cost, public and internal statuses, progress, errors, and dates. Commend orders also return the count of each type; premium comment orders return the variant and delays.
GET /api/order/list
GET /api/order/list?page=1&per_page=50&status=completed
| Parameter | Default | Description |
|---|---|---|
page | 1 | Page number. |
per_page | 50 | Number of orders per page. |
status | All | Optional status filter. |
The response contains the orders array and a pagination object with the page, pages, total, has_next and has_prev fields.
GET /api/user/balance
{
"status": "success",
"data": {
"balance": 1000.0,
"regular_balance": 800.0,
"promo_balance": 200.0,
"currency": "RUB"
}
}
balance - total balance, regular_balance - regular funds, and promo_balance - promotional funds that can be used only for boosting.
GET /api/user/stats
Returns total and completed order counts, total spending, average order value, and current balance.
Statuses: pending, processing, paused, completed, failed, cancelled.
Error Format
{
"status": "error",
"code": "ERROR_CODE",
"message": "Error description"
}
Main HTTP Status Codes
| Code | Meaning |
|---|---|
200 / 201 | Request completed successfully. |
400 | A parameter is missing or has an invalid format. |
401 | The API key is missing, invalid, or expired. |
402 | Insufficient eligible balance. |
404 | Order or product not found. |
409 | State conflict, for example, the player is not on the server or already has an active commend order. |
500 / 502 / 503 | Temporary website or external fulfillment system error. |
status field. Do not consider an order created until you receive status: "success" and data.order_id.