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"
Important: do not share your API key with third parties or include it in client-side JavaScript. Store the key on the server only.

Key Management

MethodPurposeAuthorization
POST /api/token/generateCreate a key. Optional field: name.Active website session
POST /api/token/refreshReplace the current key with a new one. Optional field: password.Bearer token
GET /api/token/listGet 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_typeServiceRequired Link
comment+rep commentsSteam profile with public comments
comment_rep-rep commentsSteam profile with public comments
comment_randomRandom commentsSteam profile with public comments
comment_premiumDelayed premium commentsSteam profile with public comments
likeLikesSupported Steam Community page
disDislikesSupported Steam Community page
subscribeGroup membersSteam group link
reviewReview likesSteam review link
favoriteAdd to favoritesWorkshop item URL
workshop_subscribeWorkshop followersWorkshop profile URL
curator_subscribeCurator followersCurator page URL

Common Parameters

ParameterTypeRequiredDescription
action_typestringYesService code from the table above.
quantityintegerYesNumber of actions: 10 to 2,000.
target_linkstringOn creation onlyFull 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.

ParameterTypeRequiredAllowed Values
comment_variantstringNoplus, minus or random. Default: random.
delay_min_minutesintegerNoMinimum delay, at least 5 minutes.
delay_max_minutesintegerNoMaximum 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
  }
}
Charge: the amount is charged when the order is created. If the fulfillment system rejects the order, the funds are automatically returned to the balance.

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"
}
ParameterTypeRequiredDescription
action_typestringYesreward_pack
quantityintegerYesAward quantity, 1–2000. Types are distributed automatically.
target_linkstringYesSteam profile or content URL. The type is detected automatically.
Important: Always use the price returned by /api/order/price. The values above are an example and may differ for your account.

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.

Important: Use your regular SteamSMM Bearer token. HMAC and IP whitelisting are not required.

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.

Important: Catalog and stock prices use the latest synchronized offers. The authoritative payable amount is total_to_pay returned by create_order after the live reservation.

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

ParameterTypeRequiredDescription
targetstringFor validation and creationSteamID64 or a profile link. The steam_id and target_link fields are also accepted.
friendlyintegerNoNumber of Friendly commends. Default: 0.
teacherintegerNoNumber of Teacher commends. Default: 0.
leaderintegerNoNumber 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 statusFulfillment statusMeaning
pendingQUEUEDWaiting for the player, a free proxy, or execution to start.
processingrunningCommends are being delivered.
pausedpausedThe player left the server. Processing resumes automatically after return.
completeddoneThe order is completed.
failedfailedA terminal execution error occurred.
cancelledcanceledThe 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:

FieldDescription
category_idProduct identifier used for calculation and purchase.
title, region, descriptionProduct title, region, and description.
stockCurrent inventory.
min_count, max_countAllowed quantity per request.
price_per_itemPrice 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
  }
}
Security: save delivered accounts immediately and do not write the full response to public logs. If the supplier delivers fewer accounts than ordered, the API charges only for the quantity actually delivered and returns the 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

ParameterTypeRequiredDescription
product_idintegerYesGame ID from the rental catalog.
duration_hoursintegerYesRental duration in hours.
idempotency_keystringOn creation onlyUnique 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.

Important: After a network failure, retry with the same key and parameters to avoid a duplicate purchase. Use a new key for a new rental.

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.

Important: Use a unique idempotency key for each extension. Retry a failed request with the same rental, duration and key.

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.

Security: Access details are available only to the rental owner. Do not publish tokens, passwords or Guard codes.

Errors

CodeDescription
PRODUCT_NOT_FOUNDGame unavailable.
INVALID_DURATIONInvalid rental duration.
NO_STOCKNo accounts available.
IDEMPOTENCY_CONFLICTKey reused with different parameters.
INVALID_IDEMPOTENCY_KEYInvalid idempotency key.
INSUFFICIENT_BALANCEInsufficient regular balance.
EXTENSION_IN_PROGRESSAnother extension is already in progress.
EXTENSION_CONFLICT / EXTENSION_REJECTEDExtension was not applied; retry with the same key.
RENTAL_REJECTEDRental rejected; see message.
CREDENTIALS_UNAVAILABLE / RENTAL_ENDEDRental access ended or unavailable.
RATE_LIMITEDSteam 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.

Important: promotional balance cannot be used to purchase keys. Do not publish delivered keys or the full API response in logs.

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
ParameterDefaultDescription
page1Page number.
per_page50Number of orders per page.
statusAllOptional 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

CodeMeaning
200 / 201Request completed successfully.
400A parameter is missing or has an invalid format.
401The API key is missing, invalid, or expired.
402Insufficient eligible balance.
404Order or product not found.
409State conflict, for example, the player is not on the server or already has an active commend order.
500 / 502 / 503Temporary website or external fulfillment system error.
Recommendation: always check the HTTP status code, then the status field. Do not consider an order created until you receive status: "success" and data.order_id.