Vende nuestros servicios de Steam desde tu propio panel a precios de revendedor.
Crea pedidos, sigue su entrega y consulta tu saldo con simples solicitudes HTTP. Todas las respuestas son JSON y todos los precios están en USD.
Los pedidos realizados a través de la API tienen un 20% de descuento sobre los precios del panel. Los precios de abajo ya lo incluyen.
URL base
https://cappiservices.com/api/Reseller
Tu clave de API está en el panel del cliente, en API Key. Al crear una clave nueva, la anterior queda invalidada de inmediato. Abrir la página de API Key
Pruebas y uso
Para probar y usar la API, puedes usar Swagger UI:
Todas las solicitudes, excepto ServicesList, necesitan tu clave de API. Envíala de una de estas tres formas:
Encabezado HTTP X-Api-Key (recomendado: la clave no queda en las URL ni en los registros del servidor).
Parámetro key en la query string.
Campo key en un cuerpo application/x-www-form-urlencoded (solo POST).
Las claves creadas antes de noviembre de 2026 pueden contener + y /: codifícalas como URL cuando las envíes en la query string; de lo contrario, + se convierte en un espacio y la clave es rechazada. Las claves nuevas tienen 64 caracteres hexadecimales y no necesitan codificación.
Solicitudes y respuestas
Los parámetros van en la query string o en el cuerpo de un formulario (POST). Si todo sale bien, se devuelve HTTP 200; un error de negocio devuelve HTTP 400 con un campo error (RegisterOrder también establece success en false). No se cobra nada cuando se rechaza un pedido.
Límite de 120 solicitudes cada 1 minuto(s) por dirección IP. Por encima de ese límite, la API responde HTTP 429 con un encabezado Retry-After.
Servicios
Esta tabla es en vivo: los precios ya incluyen tu descuento y max es la cantidad disponible en este momento (depende del stock de nuestras cuentas). RegisterOrder rechaza un servicio marcado como no disponible hasta que vuelva a estarlo; la misma información está en el campo active de ServicesList.
ID
Servicio
Tipo
Precio por unidad
Mín. / Máx.
Estado
199825
Steam Like SharedFiles/Screenshots/Guides/Workshop
link: URL de la captura de pantalla, ilustración, guía o elemento del Workshop: steamcommunity.com/sharedfiles/filedetails/?id=... (o /workshop/filedetails/?id=...).
link: URL de la captura de pantalla, ilustración, guía o elemento del Workshop: steamcommunity.com/sharedfiles/filedetails/?id=... (o /workshop/filedetails/?id=...).
Default
$ 0.0152
1 / 4797
Activo
199827
Steam Group Members
link: URL pública del grupo: steamcommunity.com/groups/tugrupo. El grupo debe ser público.
Default
$ 0.02
1 / 5467
Activo
199828
Steam Workshop Followers
link: SteamID64 del autor del Workshop (17 dígitos, p. ej. 76561198307708414) o steamcommunity.com/profiles/SteamID64. No se aceptan URL personalizadas (/id/nombre).
Default
$ 0.012
1 / 4797
Activo
199829
Steam Curator Followers
link: Página del curador: store.steampowered.com/curator/12345678-Name/.
Default
$ 0.024
1 / 5467
Activo
199830
Steam Game Review Rate Up (helpful votes)
link: URL del análisis: steamcommunity.com/id/user/recommended/appid/ o steamcommunity.com/profiles/SteamID64/recommended/appid/. Los votos siempre son "útil" (Rate Up).
Default
$ 0.012
1 / 4797
Activo
199831
Steam Trade Boost (trade offers, 1 gem each)
link: URL de intercambio de Steam de la cuenta receptora: steamcommunity.com/tradeoffer/new/?partner=...&token=... El inventario debe ser público; cada unidad es una oferta de intercambio que incluye 1 gema.
Default
$ 0.0022
1 / 1000
Activo
199832
Steam Profile Comments (ready-made packages)
link: SteamID64 del perfil (17 dígitos) o steamcommunity.com/profiles/SteamID64. El perfil debe permitir comentarios. Los comentarios provienen de nuestros paquetes predefinidos (parámetro obligatorio package).
link: URL de la captura de pantalla, ilustración o elemento del Workshop (steamcommunity.com/sharedfiles/filedetails/?id=...). Los comentarios provienen de nuestros paquetes predefinidos (parámetro obligatorio package).
Parámetros opcionales: package
Default
$ 0.0264
1 / 10000
Activo
199834
Steam Group Comments (ready-made packages)
link: URL pública del grupo: steamcommunity.com/groups/tugrupo. Los comentarios provienen de nuestros paquetes predefinidos (parámetro obligatorio package).
Parámetros opcionales: package
Default
$ 0.0264
1 / 10000
Activo
199835
Steam Profile Comments (your own comments)
link: SteamID64 del perfil o steamcommunity.com/profiles/SteamID64, más tus propios comentarios en el parámetro comments (uno por línea). Parámetro delay opcional.
Steam Screenshot/Artwork/Workshop Comments (your own comments)
link: URL de la captura de pantalla, ilustración o elemento del Workshop, más tus propios comentarios en el parámetro comments (uno por línea). Parámetro delay opcional.
En los servicios de comentarios predefinidos el parámetro package es obligatorio. Acepta cat:<category>[:<language>] (comentarios aprobados de nuestra biblioteca en una categoría; sin el idioma, inglés más los comentarios sin palabras) y lib:<id> (un paquete oficial o publicado de la biblioteca, o uno de tus paquetes; hasta 10 por pedido). Separa varios con comas: el pedido usa hasta quantity comentarios distintos de ellos, sorteados sin repetir (uno por comentario), y necesita al menos 5 comentarios.
Códigos de idioma: en, pt, es, ru, tr, de, pl, zh, ja, fr, it, ko, uk, ar, th, vi, id, ms, tl, hi, he, cs, sk, nl, hu, ro, sv, da, fi, no, el, bg, sr, none, other (none = comentarios sin palabras, como emoji).
Tus propios comentarios (parámetro comments): un comentario por línea, hasta 500 líneas de 1000 caracteres cada una. Las líneas vacías se ignoran. Envíalo en el cuerpo del formulario, no en la URL.
Los servicios de comentarios propios aceptan exactamente un origen: comments (un comentario por línea, como arriba), comments_json (solo en el cuerpo del formulario: un array JSON de strings, un comentario por elemento; se mantienen los saltos de línea y la sangría; hasta 999 bytes y 30 líneas por comentario, y quantity puede ser como máximo 25 veces el número de comentarios distintos) o package=lib:<id> (tus paquetes privados de la biblioteca, separados por comas).
Cada comentario propio se revisa antes de crear el pedido. Solo se rechazan las estafas: reputación de intercambio o de confianza, enlaces, contacto fuera de Steam, hacerse pasar por el soporte de Valve o Steam, sorteos falsos o publicidad, datos personales reales y contenido sexual con menores. Se permiten bromas, groserías y contenido tóxico o adulto. Si algún comentario no se aprueba, el pedido se rechaza y no se cobra nada; envía allow_partial=1 para continuar solo con los aprobados (mismo precio). Una lista comments_json con más comentarios distintos que quantity se recorta a una muestra aleatoria (truncatedComments).
Parámetro delay (solo comentarios personalizados): intervalo entre dos comentarios. Valores aceptados: 10 Seconds, 7 Minutes, 15 Minutes, 30 Minutes, 1 Hour, 3 Hours, 6 Hours. Predeterminado: 10 Seconds. El precio por comentario es el del intervalo elegido; el rate de la tabla es el precio de 10 Seconds.
Endpoints
GET/ServicesList
Lista de todos los servicios con ID, precio por unidad, límites y cómo rellenar el link. No requiere autenticación.
Precio por unidad; todos los precios están en USD.
category
string
La categoría del servicio.
name
string
El nombre del servicio.
desc
string
Descripción del servicio o de cómo usarlo.
type
string
Default (link + quantity; los servicios de comentarios también requieren package) o Custom Comments (además requiere comments, comments_json o package=lib:).
min
integer
La cantidad mínima permitida para el servicio.
max
integer
La cantidad máxima permitida para el servicio.
active
boolean
false cuando el servicio está desactivado o sin stock: RegisterOrder lo rechaza.
optionalParams
string[]
Parámetros opcionales de RegisterOrder que acepta el servicio.
GET/Balance
Saldo actual de la cartera de la cuenta propietaria de la clave de API.
Crea un pedido y cobra de tu cartera de inmediato (quantity × rate). El link se valida antes del cobro; el pedido se rechaza, sin cobrar nada, cuando el servicio no está disponible, la cantidad está fuera de rango, el link no corresponde al servicio o el saldo es insuficiente.
Parámetros de la solicitud
Parámetro
Tipo
Descripción
key
string
La clave de API para la autenticación.
serviceId
integer
El ID del servicio.
link
string
Destino del pedido: URL, SteamID64 o URL de intercambio, según el servicio (consulta la tabla de servicios).
quantity
integer
Unidades a entregar, entre el mínimo y el máximo del servicio.
comments
string
Solo servicios de comentarios personalizados: tus comentarios, uno por línea.
comments_json
string
Solo servicios de comentarios propios y solo en el cuerpo del formulario: array JSON de strings, un comentario por elemento (se permiten saltos de línea). Úsalo en lugar de comments.
package
string
Solo servicios de comentarios. Obligatorio en los servicios de comentarios predefinidos; varios valores separados por comas. Acepta cat:<category>[:<language>] y lib:<id> (hasta 10 lib:<id> por pedido). En los servicios de comentarios personalizados: lib:<id> de tus paquetes privados.
delay
string
Solo servicios de comentarios personalizados: intervalo entre comentarios; el precio por comentario es el de este intervalo. Opcional, predeterminado 10 Seconds.
allow_partial
string
Solo servicios de comentarios propios: 1 = continuar con los comentarios aprobados cuando alguno no se apruebe (mismo precio). Opcional.
Ejemplo de solicitud
curl -X POST -H "X-Api-Key: YOUR_API_KEY" \
-d "serviceId=199825" \
-d "link=https://steamcommunity.com/sharedfiles/filedetails/?id=123456789" \
-d "quantity=100" \
"https://cappiservices.com/api/Reseller/RegisterOrder"
# custom comments (199835): one comment per line, URL-encoded line breaks (%0A) in the form body
curl -X POST -H "X-Api-Key: YOUR_API_KEY" \
--data-urlencode "serviceId=199835" \
--data-urlencode "link=76561198307708414" \
--data-urlencode "quantity=20" \
--data-urlencode "delay=7 Minutes" \
--data-urlencode $'comments=Nice profile!\nGreat games.\n+rep' \
"https://cappiservices.com/api/Reseller/RegisterOrder"
# comments_json (199835-199837, form body only): one comment per item, line breaks kept
curl -X POST -H "X-Api-Key: YOUR_API_KEY" \
--data-urlencode "serviceId=199835" \
--data-urlencode "link=76561198307708414" \
--data-urlencode "quantity=20" \
--data-urlencode 'comments_json=["Nice profile!","GG WP\nsee you next match"]' \
"https://cappiservices.com/api/Reseller/RegisterOrder"
# library (199832-199834, package required): categories and/or packages, comma separated
curl -X POST -H "X-Api-Key: YOUR_API_KEY" \
--data-urlencode "serviceId=199832" \
--data-urlencode "link=76561198307708414" \
--data-urlencode "quantity=20" \
--data-urlencode "package=cat:praise:en,cat:emoji,lib:12" \
"https://cappiservices.com/api/Reseller/RegisterOrder"
Solo en pedidos de comentarios propios: cuántos comentarios de tu lista se aprobaron, se rechazaron, se enviaron a revisión manual, quedaron sin revisar (inténtalo más tarde) y quedaron fuera por el recorte a quantity.
rejectedIndexes rejectedReasons
integer[] string[]
Solo en pedidos de comentarios propios: posiciones (desde 0) de los comentarios rechazados en tu lista y el motivo de cada uno (format, link, contact o policy).
{
"status": "Complete",
"charge": 1.52,
"walletReturn": 0.0304,
"mode": "Like_SharedFile",
"sucess": 98,
"success": 98,
"failed": 2,
"quantity": 100,
"remains": 2,
"observation": "Info - Your order was finalized due to a lack of accounts in the database...",
"currency": "USD",
"date": "2026-11-01T14:03:27.1234567Z"
}
Parámetros de la respuesta
Parámetro
Tipo
Descripción
status
string
Estado del pedido: EnviarParaBackEnd (pagado, esperando el envío), NaFila (en cola), Processing (en entrega) o Complete (finalizado: entregado por completo, entregado parcialmente, fallido o cancelado).
charge
decimal
Importe cobrado de tu cartera al crear el pedido (USD).
walletReturn
decimal
Importe devuelto a tu cartera por las unidades que no se pudieron entregar (USD). 0 hasta que el pedido esté Complete.
mode
string
Nombre interno del servicio (MODE).
success
integer
Unidades entregadas.
sucess
integer
Mismo valor que success. Se mantiene por compatibilidad (ortografía antigua).
failed
integer
Unidades no entregadas (definitivo solo cuando el estado es Complete).
quantity
integer
Unidades pedidas.
remains
integer
Unidades que aún faltan por entregar.
observation
string
Mensaje sobre el resultado (enlace no válido, sin cuentas, cancelado...). Vacío cuando todo se entregó.
currency
string
La moneda de los importes cobrados.
date
string
Fecha y hora de creación (UTC).
Ciclo de vida del pedido y reembolsos
La cartera se cobra al crear el pedido. Los pedidos pasan por EnviarParaBackEnd, NaFila, Processing y Complete. Complete es el único estado final: compara quantity, success y failed para saber si el pedido se entregó por completo o parcialmente. Las unidades que no se pudieron entregar se reembolsan automáticamente a la cartera cuando el pedido termina (walletReturn), y observation explica el motivo. Los pedidos no se pueden cancelar a través de la API; usa el panel del cliente mientras el pedido esté en Processing.
Mensajes de error
Todos los errores usan HTTP 400 y el campo error. Los más comunes:
{ "error": "Invalid ApiKey." }
error
Descripción
Invalid parameters
key, serviceId, link o quantity ausentes o no válidos.
Invalid ApiKey.
La clave no pertenece a ninguna cuenta (revisa la codificación URL de las claves antiguas).
Your account has been disabled, please contact support. Before accessing the panel you need to confirm your email.
Cuenta desactivada o correo electrónico aún sin confirmar.
Service:{id} Not Found
serviceId desconocido.
Service temporarily unavailable.
Servicio desactivado o sin stock en este momento (consulta active en ServicesList).
Quantity must be between 1 and {max}.
Cantidad fuera del mín./máx. del servicio.
Invalid URL Link Invalid Parameters: Only the user's SteamID64 must be entered, not a URL
El link no corresponde al formato que espera el servicio.
Insufficient Funds!!
Saldo de la cartera inferior a quantity × rate. No se cobró nada.
Unknown comments package "..." Unknown comments category "..." Some comments were not approved ... Comment review limit reached, try again later
Comentarios: paquete o categoría desconocidos, selección demasiado pequeña, comentarios no aprobados o revisión temporalmente no disponible. No se cobra nada.
Order not found. Access denied.
El pedido no existe o pertenece a otra cuenta.
Too many requests... (HTTP 429)
Límite de 120 solicitudes cada 1 minuto(s) por dirección IP. Por encima de ese límite, la API responde HTTP 429 con un encabezado Retry-After.