Deutsch
Cappi-Services

Dokumentation der Reseller-API

Verkaufe unsere Steam-Dienste aus deinem eigenen Panel zu Reseller-Preisen.

Erstelle Bestellungen, verfolge ihre Lieferung und prüfe dein Guthaben mit einfachen HTTP-Anfragen. Jede Antwort ist JSON und alle Preise sind in USD.

Bestellungen über die API erhalten 20 % Rabatt auf die Panel-Preise. Die Preise unten enthalten ihn bereits.

Basis-URL

https://cappiservices.com/api/Reseller

Deinen API-Schlüssel findest du im Kundenpanel unter API Key. Wenn du einen neuen Schlüssel erstellst, wird der vorherige sofort ungültig. API-Key-Seite öffnen

Testen und Verwendung

Zum Testen und Verwenden der API kannst du die Swagger UI nutzen:

https://cappiservices.com/swagger

Authentifizierung

Jede Anfrage außer ServicesList benötigt deinen API-Schlüssel. Du kannst ihn auf drei Arten senden:

Schlüssel, die vor November 2026 erstellt wurden, können + und / enthalten: Kodiere sie per URL-Encoding, wenn du sie im Query-String sendest, sonst wird + zu einem Leerzeichen und der Schlüssel wird abgelehnt. Neue Schlüssel bestehen aus 64 Hexadezimalzeichen und müssen nicht kodiert werden.

Anfragen und Antworten

Parameter werden im Query-String oder in einem Formular-Body (POST) übergeben. Bei Erfolg wird HTTP 200 zurückgegeben; ein fachlicher Fehler liefert HTTP 400 mit einem Feld error (RegisterOrder setzt zusätzlich success auf false). Wird eine Bestellung abgelehnt, wird nichts abgebucht.

Limit: 120 Anfragen alle 1 Minute(n) pro IP-Adresse. Darüber antwortet die API mit HTTP 429 und einem Retry-After-Header.

Dienste

Diese Tabelle ist live: Die Preise enthalten bereits deinen Rabatt, und max ist die aktuell verfügbare Menge (sie richtet sich nach unserem Kontobestand). Ein als nicht verfügbar markierter Dienst wird von RegisterOrder abgelehnt, bis er wieder verfügbar ist; dieselbe Information steht im Feld active von ServicesList.

ID Dienst Typ Preis pro Einheit Min. / Max. Status
199825
Steam Like SharedFiles/Screenshots/Guides/Workshop

link: URL des Screenshots, Artworks, Guides oder Workshop-Items: steamcommunity.com/sharedfiles/filedetails/?id=... (oder /workshop/filedetails/?id=...).

Default $ 0.0152 1 / 4797 Aktiv
199826
Steam Favorite SharedFiles/Screenshots/Guides/Workshop

link: URL des Screenshots, Artworks, Guides oder Workshop-Items: steamcommunity.com/sharedfiles/filedetails/?id=... (oder /workshop/filedetails/?id=...).

Default $ 0.0152 1 / 4797 Aktiv
199827
Steam Group Members

link: URL der öffentlichen Gruppe: steamcommunity.com/groups/deinegruppe. Die Gruppe muss öffentlich sein.

Default $ 0.02 1 / 5467 Aktiv
199828
Steam Workshop Followers

link: SteamID64 des Workshop-Autors (17 Ziffern, z. B. 76561198307708414) oder steamcommunity.com/profiles/SteamID64. Vanity-URLs (/id/name) werden nicht akzeptiert.

Default $ 0.012 1 / 4797 Aktiv
199829
Steam Curator Followers

link: Kurator-Seite: store.steampowered.com/curator/12345678-Name/.

Default $ 0.024 1 / 5467 Aktiv
199830
Steam Game Review Rate Up (helpful votes)

link: Rezensions-URL: steamcommunity.com/id/user/recommended/appid/ oder steamcommunity.com/profiles/SteamID64/recommended/appid/. Die Stimmen sind immer "hilfreich" (Rate Up).

Default $ 0.012 1 / 4797 Aktiv
199831
Steam Trade Boost (trade offers, 1 gem each)

link: Steam-Handels-URL des empfangenden Kontos: steamcommunity.com/tradeoffer/new/?partner=...&token=... Das Inventar muss öffentlich sein; jede Einheit ist ein Handelsangebot mit 1 Edelstein.

Default $ 0.0022 1 / 1000 Aktiv
199832
Steam Profile Comments (ready-made packages)

link: SteamID64 des Profils (17 Ziffern) oder steamcommunity.com/profiles/SteamID64. Das Profil muss Kommentare erlauben. Die Kommentare stammen aus unseren vorgefertigten Paketen (Pflichtparameter package).

Optionale Parameter: package

Default $ 0.0264 1 / 10000 Aktiv
199833
Steam Screenshot/Artwork/Workshop Comments (ready-made packages)

link: URL des Screenshots, Artworks oder Workshop-Items (steamcommunity.com/sharedfiles/filedetails/?id=...). Die Kommentare stammen aus unseren vorgefertigten Paketen (Pflichtparameter package).

Optionale Parameter: package

Default $ 0.0264 1 / 10000 Aktiv
199834
Steam Group Comments (ready-made packages)

link: URL der öffentlichen Gruppe: steamcommunity.com/groups/deinegruppe. Die Kommentare stammen aus unseren vorgefertigten Paketen (Pflichtparameter package).

Optionale Parameter: package

Default $ 0.0264 1 / 10000 Aktiv
199835
Steam Profile Comments (your own comments)

link: SteamID64 des Profils oder steamcommunity.com/profiles/SteamID64, dazu deine eigenen Kommentare im Parameter comments (einer pro Zeile). Optionaler Parameter delay.

Optionale Parameter: delay, comments_json, package, allow_partial

Custom Comments $ 0.0264 1 / 10000 Aktiv
199836
Steam Screenshot/Artwork/Workshop Comments (your own comments)

link: URL des Screenshots, Artworks oder Workshop-Items, dazu deine eigenen Kommentare im Parameter comments (einer pro Zeile). Optionaler Parameter delay.

Optionale Parameter: delay, comments_json, package, allow_partial

Custom Comments $ 0.0264 1 / 10000 Aktiv
199837
Steam Group Comments (your own comments)

link: URL der öffentlichen Gruppe, dazu deine eigenen Kommentare im Parameter comments (einer pro Zeile). Optionaler Parameter delay.

Optionale Parameter: delay, comments_json, package, allow_partial

Custom Comments $ 0.0264 1 / 10000 Aktiv

Kommentar-Dienste

Offizielle Pakete: Verwenden Sie lib:<id> im Parameter package. Klicken Sie auf einen Namen, um seine Kommentare zu sehen:

Bei den Diensten mit vorgefertigten Kommentaren ist der Parameter package Pflicht. Er akzeptiert cat:<category>[:<language>] (freigegebene Kommentare unserer Bibliothek in einer Kategorie; ohne Sprache Englisch plus Kommentare ohne Wörter) und lib:<id> (ein offizielles oder veröffentlichtes Bibliothekspaket oder eines Ihrer eigenen Pakete; bis zu 10 pro Bestellung). Mehrere Werte durch Kommas trennen: Die Bestellung nutzt bis zu quantity verschiedene Kommentare daraus, zufällig und ohne Wiederholung (einer pro Kommentar), und braucht mindestens 5 Kommentare.

Bibliothekskategorien:

cat:praise Compliments cat:friendly Greetings & Wishes cat:funny Funny cat:game Skill & Gameplay cat:counter_strike Counter-Strike cat:teammate Teammates & GG cat:rep +Rep (gameplay) cat:emoji Emoji cat:ascii_art ASCII Art cat:birthday Birthday cat:halloween Halloween cat:christmas Christmas cat:new_year New Year cat:valentines Valentine's Day cat:festive Other Holidays cat:toxic Toxic cat:spicy Spicy (18+) cat:other Other

Sprachcodes: 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 = Kommentare ohne Wörter, z. B. Emoji).

Deine eigenen Kommentare (Parameter comments): ein Kommentar pro Zeile, bis zu 500 Zeilen mit je 1000 Zeichen. Leere Zeilen werden ignoriert. Sende ihn im Formular-Body, nicht in der URL.

Die Dienste mit eigenen Kommentaren akzeptieren genau eine Quelle: comments (ein Kommentar pro Zeile, wie oben), comments_json (nur im Formular-Body: ein JSON-Array aus Strings, ein Kommentar pro Element; Zeilenumbrüche und Einrückung bleiben erhalten; bis zu 999 Bytes und 30 Zeilen pro Kommentar, und quantity darf höchstens das 25-Fache der Anzahl verschiedener Kommentare sein) oder package=lib:<id> (Ihre privaten Bibliothekspakete, durch Kommas getrennt).

Jeder eigene Kommentar wird geprüft, bevor die Bestellung angelegt wird. Abgelehnt wird nur Betrug: Handels- oder Vertrauensreputation, Links, Kontaktdaten außerhalb von Steam, Ausgeben als Valve- oder Steam-Support, falsche Gewinnspiele oder Werbung, echte persönliche Daten und sexuelle Inhalte mit Minderjährigen. Witze, Fluchen, toxische oder Erwachseneninhalte sind erlaubt. Wird ein Kommentar nicht freigegeben, wird die Bestellung abgelehnt und nichts abgebucht; senden Sie allow_partial=1, um nur mit den freigegebenen fortzufahren (gleicher Preis). Eine comments_json-Liste mit mehr verschiedenen Kommentaren als quantity wird auf eine Zufallsauswahl gekürzt (truncatedComments).

Parameter delay (nur bei eigenen Kommentaren): Abstand zwischen zwei Kommentaren. Akzeptierte Werte: 10 Seconds, 7 Minutes, 15 Minutes, 30 Minutes, 1 Hour, 3 Hours, 6 Hours. Standard: 10 Seconds. Der Preis pro Kommentar ist der des gewählten Abstands; der rate in der Tabelle ist der Preis für 10 Seconds.

Endpunkte

GET /ServicesList

Liste aller Dienste mit ID, Preis pro Einheit, Limits und Hinweisen, wie der Link auszufüllen ist. Keine Authentifizierung erforderlich.

Beispielanfrage

curl "https://cappiservices.com/api/Reseller/ServicesList"

Beispielantwort

[
  {
    "rate": 0.0152,
    "service": 199825,
    "category": "Steam",
    "name": "Steam Like SharedFiles/Screenshots/Guides/Workshop",
    "desc": "link: a steamcommunity.com/sharedfiles/filedetails/?id=... URL ...",
    "type": "Default",
    "min": 1,
    "max": 1100,
    "active": true,
    "optionalParams": []
  },
  {
    "rate": 0.0264,
    "service": 199835,
    "category": "Steam",
    "name": "Steam Profile Comments (your own comments)",
    "desc": "link: the profile SteamID64 ... Send \"comments\", \"comments_json\" or package=lib:<id> ...",
    "type": "Custom Comments",
    "min": 1,
    "max": 10000,
    "active": true,
    "optionalParams": ["delay", "comments_json", "package", "allow_partial"]
  }
]

Antwortparameter

ParameterTypBeschreibung
serviceintegerDie ID des Dienstes.
ratedecimalPreis pro Einheit, alle Preise in USD.
categorystringDie Kategorie des Dienstes.
namestringDer Name des Dienstes.
descstringBeschreibung des Dienstes bzw. seiner Verwendung.
typestringDefault (link + quantity; die Kommentar-Dienste benötigen zusätzlich package) oder Custom Comments (benötigt zusätzlich comments, comments_json oder package=lib:).
minintegerDie minimal zulässige Anzahl für den Dienst.
maxintegerDie maximal zulässige Anzahl für den Dienst.
activebooleanfalse, wenn der Dienst abgeschaltet oder nicht vorrätig ist: RegisterOrder lehnt ihn ab.
optionalParamsstring[]Optionale RegisterOrder-Parameter, die der Dienst akzeptiert.

GET /Balance

Aktuelles Guthaben des Kontos, dem der API-Schlüssel gehört.

Anfrageparameter

ParameterTypBeschreibung
keystringDer API-Schlüssel zur Authentifizierung.

Beispielanfrage

curl -H "X-Api-Key: YOUR_API_KEY" "https://cappiservices.com/api/Reseller/Balance"

Beispielantwort

{ "balance": 250.75, "currency": "USD" }

POST /RegisterOrder

Erstellt eine Bestellung und bucht sofort von deinem Guthaben ab (quantity × rate). Der Link wird vor der Abbuchung geprüft; die Bestellung wird abgelehnt, ohne dass etwas abgebucht wird, wenn der Dienst nicht verfügbar ist, die Menge außerhalb des Bereichs liegt, der Link nicht zum Dienst passt oder das Guthaben nicht ausreicht.

Anfrageparameter

ParameterTypBeschreibung
keystringDer API-Schlüssel zur Authentifizierung.
serviceIdintegerDie ID des Dienstes.
linkstringZiel der Bestellung: URL, SteamID64 oder Handels-URL, je nach Dienst (siehe Tabelle Dienste).
quantityintegerZu liefernde Einheiten, zwischen min und max des Dienstes.
commentsstringNur bei Diensten mit eigenen Kommentaren: deine Kommentare, einer pro Zeile.
comments_jsonstringNur bei den Diensten mit eigenen Kommentaren und nur im Formular-Body: JSON-Array aus Strings, ein Kommentar pro Element (Zeilenumbrüche erlaubt). Statt comments verwenden.
packagestringNur bei Kommentar-Diensten. Pflicht bei den Diensten mit vorgefertigten Kommentaren; mehrere Werte durch Kommas getrennt. Akzeptiert cat:<category>[:<language>] und lib:<id> (bis zu 10 lib:<id> pro Bestellung). Bei Diensten mit eigenen Kommentaren: lib:<id> Ihrer privaten Pakete.
delaystringNur bei Diensten mit eigenen Kommentaren: Abstand zwischen den Kommentaren; der Preis pro Kommentar ist der dieses Abstands. Optional, Standard 10 Seconds.
allow_partialstringNur bei den Diensten mit eigenen Kommentaren: 1 = mit den freigegebenen Kommentaren fortfahren, wenn einige nicht freigegeben werden (gleicher Preis). Optional.

Beispielanfrage

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"

Beispielantwort

{ "success": true, "error": null, "insufficientFunds": false, "orderId": 12345, "charge": 1.52 }

{ "success": false, "error": "Insufficient Funds!!", "insufficientFunds": true, "orderId": 0, "charge": 1.52 }

{ "success": false, "error": "Some comments were not approved (see rejectedIndexes). ...", "insufficientFunds": false, "orderId": 0, "charge": 0,
  "acceptedComments": 2, "rejectedComments": 1, "reviewComments": 0, "unverifiedComments": 0, "truncatedComments": 0,
  "rejectedIndexes": [2], "rejectedReasons": ["link"] }

Antwortparameter

ParameterTypBeschreibung
successbooleanGibt an, ob die Bestellung erfolgreich aufgegeben wurde.
orderIdintegerDie ID der aufgegebenen Bestellung.
chargedecimalAbgebuchter Betrag (USD): quantity × rate.
insufficientFundsbooleanGibt an, ob die Bestellung wegen unzureichenden Guthabens nicht verarbeitet wurde.
errorstringFehlermeldung, falls die Bestellung nicht aufgegeben werden konnte.
acceptedComments
rejectedComments
reviewComments
unverifiedComments
truncatedComments
integerNur bei Bestellungen mit eigenen Kommentaren: wie viele Kommentare Ihrer Liste freigegeben, abgelehnt, zur manuellen Prüfung geschickt, nicht geprüft (später erneut versuchen) und durch die Kürzung auf quantity weggelassen wurden.
rejectedIndexes
rejectedReasons
integer[]
string[]
Nur bei Bestellungen mit eigenen Kommentaren: Positionen (ab 0) der abgelehnten Kommentare in Ihrer Liste und der Grund für jeden (format, link, contact oder policy).

GET /OrderStatus

Status und Lieferzahlen einer deiner Bestellungen.

Anfrageparameter

ParameterTypBeschreibung
keystringDer API-Schlüssel zur Authentifizierung.
orderIdintegerDie Identifikationsnummer der Bestellung.

Beispielanfrage

curl -H "X-Api-Key: YOUR_API_KEY" "https://cappiservices.com/api/Reseller/OrderStatus?orderId=12345"

Beispielantwort

{
  "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"
}

Antwortparameter

ParameterTypBeschreibung
statusstringBestellstatus: EnviarParaBackEnd (bezahlt, wartet auf Versand), NaFila (in der Warteschlange), Processing (wird geliefert) oder Complete (abgeschlossen: vollständig geliefert, teilweise geliefert, fehlgeschlagen oder storniert).
chargedecimalBeim Erstellen der Bestellung von deinem Guthaben abgebuchter Betrag (USD).
walletReturndecimalFür die nicht lieferbaren Einheiten auf dein Guthaben zurückerstatteter Betrag (USD). 0, bis die Bestellung Complete ist.
modestringInterner Dienstname (MODE).
successintegerGelieferte Einheiten.
sucessintegerGleicher Wert wie success. Aus Kompatibilitätsgründen beibehalten (veraltete Schreibweise).
failedintegerNicht gelieferte Einheiten (endgültig erst, wenn der Status Complete ist).
quantityintegerBestellte Einheiten.
remainsintegerNoch zu liefernde Einheiten.
observationstringNachricht zum Ergebnis (ungültiger Link, keine Konten mehr verfügbar, storniert ...). Leer, wenn alles geliefert wurde.
currencystringDie Währung der berechneten Beträge.
datestringErstellungsdatum und -uhrzeit (UTC).

Bestellablauf und Rückerstattungen

Das Guthaben wird beim Erstellen der Bestellung abgebucht. Bestellungen durchlaufen EnviarParaBackEnd, NaFila, Processing und Complete. Complete ist der einzige Endstatus: Vergleiche quantity, success und failed, um zu erkennen, ob die Bestellung vollständig oder teilweise geliefert wurde. Nicht lieferbare Einheiten werden beim Abschluss der Bestellung automatisch auf das Guthaben zurückerstattet (walletReturn), und observation erklärt den Grund. Bestellungen können nicht über die API storniert werden; nutze dafür das Kundenpanel, solange die Bestellung Processing ist.

Fehlermeldungen

Alle Fehler verwenden HTTP 400 und das Feld error. Die häufigsten:

{ "error": "Invalid ApiKey." }
errorBeschreibung
Invalid parametersFehlender oder ungültiger key, serviceId, link oder quantity.
Invalid ApiKey.Der Schlüssel gehört zu keinem Konto (prüfe das URL-Encoding bei älteren Schlüsseln).
Your account has been disabled, please contact support.
Before accessing the panel you need to confirm your email.
Konto deaktiviert oder E-Mail-Adresse noch nicht bestätigt.
Service:{id} Not FoundUnbekannte serviceId.
Service temporarily unavailable.Dienst derzeit abgeschaltet oder nicht vorrätig (siehe active in ServicesList).
Quantity must be between 1 and {max}.Menge außerhalb von min/max des Dienstes.
Invalid URL Link
Invalid Parameters: Only the user's SteamID64 must be entered, not a URL
Der Link entspricht nicht dem Format, das der Dienst erwartet.
Insufficient Funds!!Guthaben niedriger als quantity × rate. Es wurde nichts abgebucht.
Unknown comments package "..."
Unknown comments category "..."
Some comments were not approved ...
Comment review limit reached, try again later
Kommentare: unbekanntes Paket oder unbekannte Kategorie, zu kleine Auswahl, nicht freigegebene Kommentare oder Prüfung vorübergehend nicht verfügbar. Es wird nichts abgebucht.
Order not found.
Access denied.
Die Bestellung existiert nicht oder gehört zu einem anderen Konto.
Too many requests... (HTTP 429)Limit: 120 Anfragen alle 1 Minute(n) pro IP-Adresse. Darüber antwortet die API mit HTTP 429 und einem Retry-After-Header.