ArgorantDocs

Fehler und Limits

Die eine Fehlerform, jeder Fehlercode, die Request-ID, Anfragelimits pro Plan, Limits für Suchen und Zählungen, Tageslimits, Seiten und sichere Wiederholungen.

Eine Fehlerform

Jede Fehlerantwort sieht gleich aus. Lies error.code, um zu entscheiden, was zu tun ist, und zeig Menschen error.message. Die Meldung ist ein einfacher Satz (auf Englisch).

JSON
{
  "error": {
    "code": "insufficient_credits",
    "message": "Revealing these people costs 1 credit each and the account has none left. Buy credits or upgrade.",
    "details": { "needed": 25, "balance": 0 }
  },
  "request_id": "req_8f2c1d9e0b7a4c3e9f1a2b3c4d5e6f70",
  "detail": "..."
}

detail enthält die ältere Form des Fehlers für Clients, die vor dieser Form geschrieben wurden. Neuer Code sollte error lesen.

Fehlercodes

CodeStatusWas er bedeutet und was zu tun ist
invalid_request400Der Anfrage fehlt etwas oder ein Wert ist falsch. Die Meldung sagt, was du ändern musst.
launch_blocked400Die Kampagne kann noch nicht starten. details.blockers listet auf, was fehlt.
unauthorized401Kein API-Schlüssel, oder der Schlüssel ist falsch oder widerrufen.
api_key_required401Diese Route braucht einen API-Schlüssel oder eine Connector-Anmeldung, keine Browser-Sitzung.
plan_required402Der Plan des Kontos enthält das nicht. Die Meldung nennt den Plan, der es enthält.
insufficient_credits402Nicht genug Credits für diesen Aufruf. details sagt, wie viele nötig sind. Es wurde nichts berechnet.
scope_missing403Dem Schlüssel fehlt ein Scope, den dieser Aufruf braucht. Erstell einen Schlüssel mit diesem Scope.
permission_missing403Deine Rolle im Workspace erlaubt diese Aktion nicht.
forbidden403Diese Aktion ist für dieses Konto nicht erlaubt.
not_found404Diesen Eintrag gibt es in deinem Workspace nicht. Einträge anderer Workspaces antworten genauso.
route_not_found404Diesen Endpunkt gibt es nicht. Prüf den Pfad in der Referenz.
method_not_allowed405Den Pfad gibt es, aber nicht mit dieser HTTP-Methode. details.allowed listet die Methoden.
conflict409Der Eintrag ist in einem Zustand, der das nicht erlaubt, zum Beispiel beim Löschen einer laufenden Kampagne.
idempotency_conflict409Dieser Idempotency-Key wurde schon mit einem anderen Body benutzt.
idempotency_in_progress409Eine Anfrage mit diesem Idempotency-Key läuft noch. Warte und versuch es erneut.
gone410Der Eintrag ist abgelaufen, zum Beispiel eine Exportdatei, die älter als ihre Aufbewahrungszeit ist.
quote_expired410Das Angebot ist zu alt. Hol ein neues Angebot und bestätige erneut.
validation_error422Ein Feld hat den falschen Typ oder fehlt. details.fields listet jedes Problem.
access_key_activation_required428Dieser eingeladene Zugangsschlüssel ist noch nicht aktiv. Bestätige zuerst die E-Mail unter details.claim_url.
rate_limited429Zu viele Anfragen in dieser Minute. Warte Retry-After Sekunden.
daily_limit_reached429Das Tageslimit des Schlüssels für diese Art von Aufruf ist aufgebraucht. Es wird um Mitternacht UTC zurückgesetzt.
internal_error500Bei uns ist etwas schiefgegangen. Versuch es erneut. Gib die Request-ID an, wenn es weiter fehlschlägt.
unavailable503Ein Teil des Dienstes ist ausgelastet oder pausiert. Versuch es in einer Minute erneut.
confirmation_required400Ein Kauf oder eine Bestellung braucht confirmed=true, gesendet erst nachdem die zahlende Person Ja gesagt hat.
invalid_webhook_url400Die Webhook-Adresse muss eine öffentliche https://-Adresse sein.
phones_not_in_plan402Telefonnummern gibt es ab dem Plan Pro. Es wurde nichts berechnet.
card_not_charged402Die gespeicherte Karte wurde nicht belastet. Es wurde nichts gekauft. Bezahl stattdessen über einen Zahlungslink.
owner_only403Nur der Inhaber des Workspace kann das tun, zum Beispiel Postfächer bestellen oder kündigen.
quote_not_found404Das Angebot gibt es nicht oder es gehört jemand anderem. Hol ein neues Angebot.
charge_in_progress409Dieses Angebot wird gerade abgerechnet. Prüf den Kauf gleich noch einmal.
not_enough_names409Es wurden nicht genug freie Domainnamen gefunden. Schick selbst ein paar Domains mit.
not_paid409Die Bestellung ist noch nicht bezahlt, es gibt also nichts zu kündigen.
reason_required422Zum Kündigen von Postfächern brauchst du einen Grund aus der vorgegebenen Auswahl.
sign_in_failed422Der Mailserver hat die Anmeldung nicht akzeptiert, deshalb wurde das Postfach nicht verbunden. details.test sagt für Versand und für das Lesen von Antworten, was schiefging.

Manche Operationen haben einen eigenen Code, etwa confirmation_required oder quote_not_found. Jede Operation listet ihre Codes in der Referenz. Behandle einen Code, den du nicht kennst, nach seinem HTTP-Status.

Die Request-ID

Jede Antwort enthält einen Header X-Request-Id, und jeder Fehler wiederholt ihn als request_id. Schick deine eigene ID im Header X-Request-Id mit (8 bis 64 Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche), um einen Aufruf in deinen eigenen Logs zu finden. Gib die ID an, wenn du Hilfe brauchst.

Anfragen pro Minute

Jeder Schlüssel darf so viele Anfragen pro Minute senden, und bis zur zweiten Zahl in beliebigen 10 Sekunden.

PlanAnfragen pro MinuteIn 10 Sekunden
14-tägige Testphase oder ohne Abo, API-Schlüssel oder CLI3015
14-tägige Testphase oder ohne Abo, KI-Assistent6020
Starter6015
Pro24060
Scale600150
Hyperscale1.200300

Jede Antwort auf einen Aufruf mit Schlüssel enthält X-RateLimit-Limit (Anfragen pro Minute), X-RateLimit-Remaining (verbleibende Anfragen in dieser Minute) und X-RateLimit-Reset (Sekunden bis die Minute neu beginnt). Über einem der beiden Limits bekommst du 429 rate_limited mit einem Header Retry-After. Warte so viele Sekunden und versuch es dann erneut.

Suchen und Zählungen

Suchen, Zählungen und Vorschauen sind kostenlos. Sie sind pro Konto begrenzt, über alle Schlüssel und den Connector hinweg. Ein zweiter Schlüssel bringt also nicht mehr.

PlanPro MinuteZählungen pro TagVorschauzeilen pro Tag
14-tägige Testphase oder ohne Abo, API-Schlüssel oder CLI10500500
14-tägige Testphase oder ohne Abo, KI-Assistent201.0001.000
Starter30kein Limitkein Limit
Pro60kein Limitkein Limit
Scale90kein Limitkein Limit
Hyperscale120kein Limitkein Limit

In der Testphase enthalten Suchen und Zählungen zusätzlich X-RateLimit-Daily-Limit und X-RateLimit-Daily-Remaining. Eine Vorschau enthält bis zu 10 Personen pro Aufruf.

Tageslimits pro Schlüssel

In der Testphase und ohne Abo hat jeder Schlüssel zusätzlich Tageslimits. In einem Plan hat nur der E-Mail-Finder eins, den Rest begrenzen die Credits. Tageslimits werden um Mitternacht UTC zurückgesetzt. GET /api/v1/account zeigt, was heute noch übrig ist.

WasPro TagPro Aufruf
Freigeschaltete Personen100 (kein Limit in einem Plan)25
Exportzeilen50.000 (kein Limit in einem Plan)50.000 pro Datei, 500.000 pro Stapel
Abfragen im E-Mail-Finder2.00030 pro Minute, Listen bis 10.000 Zeilen

Über einem Tageslimit bekommst du 429 daily_limit_reached. Für mehr Personen als das Tageslimit beim Freischalten speicherst du eine Liste, exportierst sie oder fügst sie einer Kampagne hinzu. Diese Wege sind für Tausende Personen gemacht.

Seiten

Jede Liste nimmt limit und cursor. Die Antwort behält ihren eigenen Schlüssel (zum Beispiel campaigns oder people) und ergänzt total, limit, offset, next_cursor und has_more. Gib next_cursor als cursor mit, um die nächste Seite zu bekommen. Auf der letzten Seite ist er null. offset geht auch, wenn du Zeilen lieber selbst zählst.

Shell
curl "https://app.argorant.com/api/v1/campaigns?limit=25" -H "Authorization: Bearer $ARGORANT_API_KEY"
curl "https://app.argorant.com/api/v1/campaigns?limit=25&cursor=bzoyNQ" -H "Authorization: Bearer $ARGORANT_API_KEY"

Wenn total_is_estimate den Wert true hat, ist total das Minimum, zum Beispiel wenn eine Liste ihre maximale Größe erreicht hat.

Sichere Wiederholungen

Schick bei jedem schreibenden Aufruf einen Header Idempotency-Key mit: Anlegen, Ändern, Löschen, Antworten, Weiterleiten und allem, was Credits oder Geld kostet. Nimm für jede neue Aktion einen neuen Zufallswert und denselben Wert, wenn du sie wiederholst.

  • Derselbe Schlüssel mit demselben Body innerhalb von 24 Stunden gibt die erste Antwort zurück, mit dem Header Idempotent-Replayed: true. Nichts passiert doppelt.
  • Derselbe Schlüssel mit einem anderen Body antwortet mit 409 idempotency_conflict.
  • Solange die erste Anfrage noch läuft, antwortet eine Wiederholung mit 409 idempotency_in_progress. Warte kurz und versuch es erneut.
  • Fehler werden nicht gespeichert. Du kannst also das Problem beheben und mit demselben Schlüssel erneut senden.
Shell
curl -X POST "https://app.argorant.com/api/v1/exports" \
  -H "Authorization: Bearer $ARGORANT_API_KEY" \
  -H "Idempotency-Key: export-cfo-germany-2026-10-07" \
  -H "Content-Type: application/json" \
  -d '{"filters":{"title":"CFO","country":"Germany"},"limit":500}'

Kampagnen, die nicht starten können

POST /api/v1/campaigns/{id}/launch antwortet mit launch_blocked, solange etwas fehlt, zum Beispiel eine E-Mail, ein Postfach mit freier Kapazität für heute oder Personen. details.blockers listet jeden Punkt in einfachen Worten (auf Englisch). GET /api/v1/campaigns/{id} zeigt dieselbe Liste als launch_blockers, damit du alles vorher beheben kannst.