API v1 JSON Token-Authentifizierung REST

API-Referenz

Erstellen Sie Integrationen für Skysnag mit API-Token mit eingeschränkten Berechtigungen. Authentifizieren mit X-Api-Token Header — keine Bearer-Authentifizierung. Alle Antworten sind JSON mit vorhersehbaren Fehlerstrukturen.

https://developers.skysnag.com/api/v1
X-Api-Token
sk_snag_…
60 Anfragen/min

Schnellstart

Drei Schritte zu Ihrer ersten authentifizierten Anfrage.

  1. API-Zugriff anfordern — Einreichen von API-Zugriffsanfragen. Ein Administrator aktiviert den API-Zugriff für Ihr Konto.
  2. Bereichs-Token erstellen — Öffnen Sie API-Token, wählen Sie die Zugriffsbereiche aus und kopieren Sie das vollständige Token sofort (wird nur einmal angezeigt).
  3. Authentifizierte Anfragen sendenX-Api-Token: sk_snag_… bei jedem geschützten Aufruf einfügen.
cURL — Health-Check (ohne Authentifizierung)
curl -s "https://developers.skysnag.com/api/v1/health" \
  -H "Accept: application/json"

Postman-Sammlung

Importieren Sie eine vorkonfigurierte Collection und ein Environment, um alle v1-Endpunkte in Postman zu erkunden.

  1. Sammlung herunterladenSkysnag-API-v1.postman_collection.json
  2. Umgebung herunterladenSkysnag-API-v1.postman_environment.json (vorausgefüllt mit der Basis-URL dieser App: https://developers.skysnag.com/api/v1)
  3. Beide Dateien importieren in Postman → Importieren → ziehe die JSON-Dateien per Drag & Drop oder wähle sie aus.
  4. Legen Sie Ihr Token fest — Setzen Sie in der Umgebung api_token auf Ihren vollständigen Token von API-Token.
  5. Anfragen ausführen — Beginnen Sie mit System → Health, dann Authentication → Get Me.

Authentifizierung

Protected endpoints require a personal API token in a dedicated header. Do not use Authorization: Bearer.

HeaderWertWenn
X-Api-Token Full token (sk_snag_…) Alle geschützten Endpunkte
cURL — authentifizierte Anfrage
curl -s "https://developers.skysnag.com/api/v1/auth/me" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
Testen Sie die API in Ihrem Browser

Fügen Sie ein Token ein, um die Jetzt ausprobieren-Konsole für die Abrufen-Endpunkte unten zu aktivieren (nur Lesezugriff). Anfragen werden gegen Ihr Live-Konto an https://developers.skysnag.com/api/v1 ausgeführt. Das Token wird nur in diesem Browser (localStorage) gespeichert und nirgendwohin außer an diese API gesendet.

Kein Schlüssel gesetzt

Basis-URL und Header

Alle v1-Pfade sind relativ zur unten angegebenen Basis-URL.

https://developers.skysnag.com/api/v1
https://api.skysnag.com/v1
HeaderWertNotizen
Akzeptierenapplication/jsonImmer
Inhaltstypapplication/jsonbeim Senden eines Bodys
X-Api-TokenIhr API-TokenGeschützte Endpunkte
X-Request-IdUUID (optional)Protokolle korrelieren; in Fehlermeldungen wiedergegeben

Antworten

Success payloads are wrapped in a data envelope.

JSON — Erfolgs-Envelope
{
  "data": { ... }
}
JSON — GET /health
{
  "data": {
    "status": "ok",
    "version": "v1"
  }
}

Fehler

Errors return a stable code, human message, and request_id for support.

JSON — Fehler-Envelope
{
  "error": {
    "code": "missing_api_token",
    "message": "API token is required...",
    "request_id": "550e8400-e29b-41d4-a716-446655440000"
  }
}
HTTPCodeBeschreibung
401API-Token fehltX-Api-Token nicht angegeben
401Ungültiger API-TokenToken unbekannt, widerrufen oder abgelaufen.
403API-Zugriff deaktiviertKonto hat keinen API-Zugriff
403API-Plan nicht berechtigtComply- oder Testversion — auf Protect oder Suite upgraden
403Unzureichende BerechtigungenDem Token fehlt der erforderliche Scope
422ValidierungsfehlerUngültiger Anfragekörper
404Nicht gefundenRessource nicht gefunden
429HTTP-FehlerRate-Limit überschritten
500Interner FehlerUnerwarteter Serverfehler

Paginierung der Liste

List endpoints return pagination metadata alongside data.

ParameterTypStandardBeschreibung
SeiteGanzzahl1Seitennummer (beginnend bei 1)
BegrenzungGanzzahlvariiertElemente pro Seite (max. 100)
JSON — paginierte Antwort
{
  "data": [ ... ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 120,
    "has_more": true
  }
}

Ratenbegrenzungen

Each token is limited to 60 requests per minute by default.

Wenn das Limit überschritten wird, gibt die API HTTP 429 zurück. Implementieren Sie ein exponentielles Backoff. Kontaktieren Sie den Support, um höhere Limits zu erhalten.

Berechtigungen

Tokens werden mit zugewiesenen Scopes versehen. Endpunkte lehnen Anfragen ab, wenn der erforderliche Scope fehlt.

API v1 scopes

GeltungsbereichBeschreibung
account:readRead account and token metadata
me:readRead current user profile, permissions, domains, and security
me:writeUpdate current user profile
users:readList account users and domain access
users:writeCreate, update, and delete account users
tokens:readList active API tokens
tokens:writeCreate and revoke API tokens
domains:readList and read domains
domains:writeCreate, update, and delete domains

Legacy scopes

Gültig für vorhandene Tokens älterer Integrationen. Nicht erforderlich für neue v1-Authentifizierungsendpunkte.

GeltungsbereichBeschreibung
email-trust:readRead DMARC/SPF/BIMI trust data
reports:readRead aggregate and compliance reports
integrations:readRead integration settings
integrations:writeManage integrations

API-Referenz

Dokumentation der Endpunkte für die aktuelle v1-Oberfläche.

Systemprüfung

GET /health

Öffentliche Statusprüfung. Keine Authentifizierung erforderlich.

FeldTypBeschreibung
data.statusstringok wenn erreichbar
data.versionstringAPI-Version (v1)
HTTP
curl -s "https://developers.skysnag.com/api/v1/health" \
  -H "Accept: application/json"
GET /auth/scopes

Gibt zuweisbare Scopes zurück, gruppiert nach v1 und legacy. Keine Authentifizierung erforderlich.

cURL
curl -s "https://developers.skysnag.com/api/v1/auth/scopes" \
  -H "Accept: application/json"
JSON — Antwort
{
  "data": {
    "v1": [{"id": "account:read", "description": "...", "group": "v1"}],
    "legacy": [{"id": "domains:read", "description": "...", "group": "legacy"}]
  }
}
GET /auth/me account:read

Gibt das authentifizierte Konto und die Metadaten für das verwendete Token zurück. Alias von GET /account.

cURL
curl -s "https://developers.skysnag.com/api/v1/auth/me" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"

Aktuelle Benutzer-API

Authentifizierten Benutzer lesen und aktualisieren. Schemata: users, roles, teams, user_regions, domain_accesses, webauthn_credentials, password_securities.

GET /me me:read

Aktuelles Benutzerprofil.

cURL
curl -s "https://developers.skysnag.com/api/v1/me" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
GET /me/permissions me:read

Effektive Berechtigungen, abgeleitet aus der Benutzerrolle und den Kontoeinstellungen.

cURL
curl -s "https://developers.skysnag.com/api/v1/me/permissions" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
GET /me/domains me:read

Für den aktuellen Benutzer sichtbare Domains. Unterstützt page und limit.

cURL
curl -s "https://developers.skysnag.com/api/v1/me/domains?page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
GET /me/security me:read

Sicherheitsstatus von MFA und Passkey für den aktuellen Benutzer.

cURL
curl -s "https://developers.skysnag.com/api/v1/me/security" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
PATCH /me me:write

Aktualisieren Sie das aktuelle Benutzerprofil.

FeldTypBeschreibung
NamestringAnzeigename (max. 50 Zeichen)
SprachestringBevorzugter Sprachcode
cURL
curl -s "https://developers.skysnag.com/api/v1/me" \
  -X PATCH \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here" \
  -d '{
    "name": "Updated Name"
  }'

Benutzerverwaltungs-API

Teammitglieder des Kontos verwalten. Erfordert, dass das authentifizierte Konto Teambesitzer ist. Schemata: users, roles, teams, domain_accesses, password_securities, webauthn_credentials, user_detail_changes_history.

GET /roles users:read

Liste der Rollen, die beim Einladen oder Aktualisieren von Teammitgliedern zugewiesen werden können. Inhaber, Administrator und Editor sind ausgeschlossen.

GET /roles/{role_id} users:read

Details für eine einzelne zuweisbare Rolle abrufen.

GET /users users:read

Kontobenutzer des aktuellen Teams auflisten.

POST /users users:write

Erstelle eine Einladung für ein Kontomitglied. Standardmäßig wird eine Einladungs-E-Mail versendet.

GET /users/{user_id} users:read

Benutzerdetails abrufen.

PATCH /users/{user_id} users:write

Benutzerdaten aktualisieren.

DELETE /users/{user_id} users:write

Ein Teammitglied löschen.

PATCH /users/{user_id}/status users:write

Benutzerstatus umschalten. Inhalt: {"enabled": true}

PATCH /users/{user_id}/role users:write

Rolle ändern. Request-Body: {"role_id": 5}

PATCH /users/{user_id}/enforce-2fa users:write

Zwei-Faktor-Authentifizierung (2FA) - Erzwingung umschalten. Request-Body: {"enabled": true}

POST /users/{user_id}/reinvite-user users:write

Kontoeinladungs-E-Mail an ein bestehendes Teammitglied erneut senden.

GET /users/{user_id}/domains users:read

Domainzugriffe für einen Benutzer auflisten.

API zur Domainverwaltung

Kontodomains verwalten. Schreibvorgänge erfordern das Konto des Teaminhabers. Schemata: domains, domain_groups, domain_accesses, domain_states, domain_snapshot, parked_domains, license_domain, domains_services, cloudflare_records.

GET /domains domains:read

Listet die für das Konto sichtbaren Domains auf. Unterstützt page und limit.

POST /domains domains:write

Domain erstellen. Body: {"fqdn": "example.com", "parent_domain_id": null}

POST /domains/bulk domains:write

Mehrere Domains gleichzeitig hinzufügen. Body: {"domains": ["example.com", "example.org"]}. Gibt eine Job-ID zurück.

GET /domains/bulk/{job_id} domains:read

Status des Bulk-Add-Jobs und domänenspezifische Ergebnisse abrufen.

GET /domains/{domain_id} domains:read

Domänendetails einschließlich DNS- und Verifizierungsstatus abrufen.

PATCH /domains/{domain_id} domains:write

Domain-Metadaten bearbeiten (Gruppe, Status, Onboarding-Status, übergeordnete Domain)

DELETE /domains/{domain_id} domains:write

Eine Domain und zugehörige gehostete Einträge löschen.

POST /domains/{domain_id}/verify domains:write

DNS-Einträge der Domain überprüfen. Optionale Felder im Body: dmarc_record, spf_record, bimi_record, tls_rpt_record, mta_sts_record.

POST /domains/{domain_id}/check-dns domains:write

Eine DNS-Abfrage/Prüfung durchführen und das Ergebnis zum späteren Abruf speichern.

GET /domains/{domain_id}/dns-fetch-result domains:read

Ruft das zuletzt von check-dns gespeicherte DNS-Abruf-Ergebnis ab (zwischengespeichert für 7 Tage). Der Antwortkörper von check-dns enthält bereits das vollständige Ergebnis; verwenden Sie diesen Endpunkt, um es später abzurufen, ohne die Prüfung erneut auszuführen.

GET /domains/{domain_id}/status domains:read

Protokoll-Überprüfungsstatus abrufen (DMARC, SPF, MTA-STS, TLS-RPT, BIMI).

GET /domains/{domain_id}/services domains:read

Angehängte E-Mail-Versanddienste abrufen.

PATCH /domains/{domain_id}/services domains:write

Angehängte Dienste ersetzen. Anfrage-Body: {"service_ids": [1, 2]}

Domain-Gruppen-API

Domains in Gruppen organisieren. Gruppen gehören dem Account-Team; für Schreibvorgänge ist ein Team-Inhaber erforderlich.

GET /domain-groups domains:read

Domaingruppen des Kontos mit der Anzahl der Domains auflisten.

POST /domain-groups domains:write

Domänengruppe erstellen. Inhalt: {"name": "Production", "status": "active"} (status optional).

GET /domain-groups/{group_id} domains:read

Eine einzelne Domänengruppe abrufen.

PATCH /domain-groups/{group_id} domains:write

Domaingruppe bearbeiten. Body: {"name": "New name", "status": "active"} (beides optional).

DELETE /domain-groups/{group_id} domains:write

Domänengruppe löschen. Mitgliedsdomänen werden aus der Gruppe entfernt, nicht gelöscht.

GET /domain-groups/{group_id}/domains domains:read

Domänen in einer Gruppe auflisten (paginierte Ansicht)

POST /domain-groups/{group_id}/domains domains:write

Domain zur Gruppe hinzufügen. Inhalt: {"domain_id": 123}.

DELETE /domain-groups/{group_id}/domains/{domain_id} domains:write

Domain aus der Gruppe entfernen (die Domain wird keiner Gruppe mehr zugeordnet)

Gehostete DMARC-API

Verwalten Sie von Skysnag gehostete DMARC-DNS-Einträge, die Durchsetzungsrichtlinie, den Verlauf und Empfehlungen für eine Domain. Für Schreibvorgänge ist ein Team-Inhaber erforderlich.

GET /domains/{domain_id}/hosted-dmarc domains:read

Gibt den Namen des gehosteten Datensatzes, den Wert, den Aktivierungsstatus und die aktuelle Richtlinie zurück.

POST /domains/{domain_id}/hosted-dmarc domains:write

Den von Skysnag gehosteten DMARC-TXT-Eintrag für die Domain bereitstellen.

PATCH /domains/{domain_id}/hosted-dmarc domains:write

Erweiterte DMARC-Tags aktualisieren: p, sp, pct, adkim, aspf, rua, ruf usw.

DELETE /domains/{domain_id}/hosted-dmarc domains:write

Den gehosteten DMARC-Eintrag aus dem Skysnag-DNS entfernen.

GET /domains/{domain_id}/dmarc-policy domains:read

Lesen Sie die wirksame DMARC-Richtlinie und die analysierten Tag-Parameter.

PATCH /domains/{domain_id}/dmarc-policy domains:write

Nur die Durchsetzung aktualisieren. Inhalt: {"policy": "quarantine"} oder {"p": "reject"}

GET /domains/{domain_id}/dmarc/history domains:read

Aktivitätsprotokolle und DMARC-Snapshots. Unterstützt page und limit.

POST /domains/{domain_id}/dmarc/recommendation domains:read

Vorgeschlagenes Durchsetzungsniveau basierend auf den Übereinstimmungsstatistiken und dem Überwachungszeitraum.

Gehostete SPF-API

Verwalten Sie von Skysnag gehostete SPF‑Einträge, Include‑Einträge, IP‑Autorisierungsaktionen und SPF‑Flattening für eine Domain. Für Schreibvorgänge ist ein Team‑Besitzer erforderlich.

GET /domains/{domain_id}/hosted-spf domains:read

Gibt den gehosteten SPF-Datensatz (Name/Wert), den auf Ihrer Domain zu veröffentlichenden Eintrag, den Aktivierungsstatus, den terminalen all-Qualifier und die Anzahl der Abfragen zurück.

POST /domains/{domain_id}/hosted-spf domains:write

Richten Sie den von Skysnag gehosteten SPF-Eintrag für die Domain ein.

PATCH /domains/{domain_id}/hosted-spf domains:write

Erweiterte SPF-Einstellungen bearbeiten. Inhalt: {"all": "~all"} (eine der Optionen -all, ~all, ?all, +all).

DELETE /domains/{domain_id}/hosted-spf domains:write

Deaktivieren Sie das gehostete SPF und entfernen Sie den Eintrag aus dem Skysnag-DNS.

GET /domains/{domain_id}/spf/history domains:read

SPF-Aktivitätsprotokolle und Schnappschüsse von Datensätzen. Unterstützt page und limit.

GET /domains/{domain_id}/spf/includes domains:read

SPF-Includes auflisten, die für die Domain konfiguriert sind.

POST /domains/{domain_id}/spf/includes domains:write

SPF-Include hinzufügen. Inhalt: {"include_content": "_spf.google.com"}

DELETE /domains/{domain_id}/spf/includes/{include_id} domains:write

Einen SPF-Include aus dem gehosteten DNS-Eintrag entfernen.

GET /domains/{domain_id}/spf/ip-actions domains:read

Liste der SPF-IP-Autorisierungsaktionen (Zulassen / Ablehnen).

POST /domains/{domain_id}/spf/ip-actions domains:write

IP autorisieren oder blockieren. Body: {"ip": "203.0.113.10", "type": "Allow"} (type = Allow oder Reject).

POST /domains/{domain_id}/spf/flatten domains:read

Generiert einen abgeflachten SPF-Eintrag, indem Include‑Anweisungen in IP‑Bereiche aufgelöst werden. Gibt den abgeflachten Eintrag, die IPv4-/IPv6-Listen sowie die Anzahl der DNS‑Abfragen im Vergleich zum Limit zurück.

BIMI/VMC-API

BIMI-Einträge, SVG-Logos, VMC-Zertifikate und Bereitschaftsprüfungen verwalten. Für Schreibvorgänge ist ein Teaminhaber erforderlich.

GET /bimi/registrations account:read

Partner-BIMI-Registrierungsanfragen für das Account-Team auflisten.

GET /domains/{domain_id}/bimi domains:read

Gibt BIMI-Datensatzdetails, DNS-Ziele, Logo-/VMC-Status und Ergebnisse der SVG-Überprüfung zurück.

POST /domains/{domain_id}/bimi domains:write

Hosted-BIMI für die Domain bereitstellen.

PATCH /domains/{domain_id}/bimi domains:write

BIMI neu synchronisieren oder bearbeiten. Veröffentlicht erneut anhand der hochgeladenen Dateien oder übergeben Sie record_value für eine manuelle Überschreibung.

DELETE /domains/{domain_id}/bimi domains:write

BIMI-Konfiguration, gehostete Dateien und Route53-Eintrag löschen.

POST /domains/{domain_id}/bimi/svg-convert domains:read

Konvertieren und validieren Sie SVG für BIMI Tiny PS. Inhalt: {"svg_content": "<svg...>"}

GET /domains/{domain_id}/bimi/vmc domains:read

Vollständige VMC‑Analyse (DNS, Zertifikatskette, Validierung). Fügen Sie refresh=true als Abfrageparameter hinzu, um den Cache zu umgehen.

POST /domains/{domain_id}/bimi/vmc/inspect domains:read

Ein PEM-Zertifikat prüfen, ohne es hochzuladen. Inhalt: {"pem": "-----BEGIN CERTIFICATE-----..."}

GET /domains/{domain_id}/bimi/readiness domains:read

BIMI/VMC-Bereitschafts-Checkliste mit Punktzahl, Protokollstatus und für jede Prüfung: bestanden/nicht bestanden

MTA-STS-API

Verwalten Sie gehostetes MTA-STS und TLS-RPT für eine Domain. Für Schreibvorgänge ist ein Teaminhaber erforderlich.

GET /domains/{domain_id}/mta-sts domains:read

Gibt den MTA-STS-Status, den Richtlinienmodus, die Kunden-CNAME-Ziele, gehostete DNS-Einträge und Metadaten der Synchronisierungsprüfung zurück.

GET /domains/{domain_id}/mta-sts/web-file domains:read

Gibt den Inhalt der MTA-STS-Richtliniendatei zurück, der unter https://mta-sts.{domain}/.well-known/mta-sts.txt bereitgestellt wird.

POST /domains/{domain_id}/mta-sts/setup domains:write

Gehostete MTA-STS- und TLS-RPT-Einträge bereitstellen. Erstellt bei Bedarf eine Standardrichtlinie (mode: none) aus den aktuellen MX-Einträgen.

PATCH /domains/{domain_id}/mta-sts/policy domains:write

Aktualisieren Sie die MTA-STS-Richtlinie. Übergeben Sie den rohen policy-Text oder strukturierte Felder: mode, max_age und optional die mx-Hostnamen.

PATCH /domains/{domain_id}/mta-sts/mode domains:write

Nur den Richtlinienmodus aktualisieren. Body: {\"mode\": \"none|testing|enforce\"}. MX-Einträge werden aus dem Live-DNS aktualisiert.

POST /domains/{domain_id}/mta-sts/reset domains:write

Richtlinie auf Standardeinstellungen zurücksetzen: mode: none, aktuelle MX-Einträge, max_age: 604800.

POST /domains/{domain_id}/mta-sts/check domains:read

Führen Sie die MTA-STS- und TLS-RPT-Validierung über den Prüfdienst durch. Optionaler Body: verify_dns, require_caa, deploy_policy (Standard: true bei DNS-Verifizierung).

TLS-RPT-API

Gehostetes TLS-RPT konfigurieren und empfangene TLS-Berichte abfragen. Für Schreibvorgänge ist ein Teaminhaber erforderlich.

GET /domains/{domain_id}/tls-rpt domains:read

Gibt TLS-RPT-Konfiguration, DNS-Ziele, Verifizierungsstatus und Gesamtzahl der Berichte zurück.

POST /domains/{domain_id}/tls-rpt/setup domains:write

Gehostetes TLS-RPT in Route53 mit der Skysnag-Berichtsadresse bereitstellen.

PATCH /domains/{domain_id}/tls-rpt domains:write

Veröffentlichen Sie den gehosteten TLS-RPT-Eintrag erneut. Optionaler Body: record_value (muss mit v=TLSRPTv1 beginnen).

GET /domains/{domain_id}/tls-rpt/reports domains:read

Paginierte TLS-Berichte. Filter: policy_domain, policy_mode, start_date, end_date.

GET /domains/{domain_id}/tls-rpt/reports/{report_id} domains:read

Einen einzelnen TLS-Bericht anhand der Datenbank-ID oder der Bericht-UUID abrufen.

GET /domains/{domain_id}/tls-rpt/by-source domains:read

TLS-Sitzungen nach der IP der sendenden MTA aggregieren. Unterstützt dieselben Datums- und Richtlinienfilter.

GET /domains/{domain_id}/tls-rpt/by-result domains:read

Fehlgeschlagene Sitzungen nach TLS-Ergebnistyp zusammenfassen.

GET /domains/{domain_id}/tls-rpt/failures domains:read

TLS-Fehlerübersicht mit Gesamtzahlen für Erfolge/Fehler und Aufschlüsselung nach Fehlergrundcode.

GET /domains/{domain_id}/tls-rpt/failure-details domains:read

Paginierte Zeilen mit TLS-Fehlern (Fehleranzahl ungleich 0 oder Codes für Fehlerursachen)

Domain-Gesundheits- und Sicherheits-Score-API

Read-only domain health, email security score, mail volume, sending services, failing sources, and cached dashboard data. All endpoints are scoped to {domain_id} and require domains:read. Volume/source endpoints accept optional start_date/end_date (YYYY-MM-DD, default last 30 days).

Domain-Gesundheitsstatus abrufen

get /domains/{domain_id}/health domains:read

Aktueller Domain-Gesundheitsüberblick: eine pro Protokoll dargestellte Pass/Fail-Übersicht, ein qualitatives result-Label, der erkannte Mailanbieter und der aktuelle DMARC-Eintrag. Bezogen auf den neuesten Domain Guard-Scan; falls kein Scan vorliegt, greift die Live-Verifikation (das Feld source gibt Auskunft).

Rücksendungen

source (guard_history | live), result, mail_provider, eine protocols-Map mit booleschen Werten, protocols_passing/total_protocols, das dmarc_record und scanned_at.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/health" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "source": "guard_history",
    "result": "Protected",
    "mail_provider": "Google Workspace",
    "protocols": {
      "dmarc": true,
      "spf": true,
      "mta_sts": true,
      "tls_rpt": true,
      "bimi": false
    },
    "protocols_passing": 4,
    "total_protocols": 5,
    "dmarc_record": "v=DMARC1; p=reject; rua=mailto:rua@example.com",
    "scanned_at": "2026-06-16T03:00:00Z"
  }
}

Systemzustandshistorie abrufen

get /domains/{domain_id}/health/history domains:read

Paginierter Verlauf der Domain Guard-Status-Snapshots, neueste zuerst. Jede Zeile erfasst den Bestanden/Nicht bestanden-Status des Protokolls und das Ergebnislabel zum Zeitpunkt des Scans, sodass Sie den Schutz im Zeitverlauf darstellen können.

Abfrageparameter

  • start_date: OPTIONAL string · date

    Beginn des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig 30 Tage zurück.

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig heute.

  • page: OPTIONAL integer

    Seitennummer, 1-basiert (Standard: 1).

  • limit: OPTIONAL integer

    Einträge pro Seite (1–100, Standard 25).

Rücksendungen

Ein paginiertes Array von Snapshot-Zeilen (id, result, mail_provider, die Map protocols, protocols_passing/total_protocols, scanned_at) sowie pagination.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/health/history?page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": [
    {
      "id": 8841,
      "result": "Protected",
      "mail_provider": "Google Workspace",
      "protocols": { "dmarc": true, "spf": true, "mta_sts": true, "tls_rpt": true, "bimi": false },
      "protocols_passing": 4,
      "total_protocols": 5,
      "scanned_at": "2026-06-16T03:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 312,
    "has_more": true
  }
}

Sicherheitsbewertung abrufen

get /domains/{domain_id}/security-score domains:read

Die aktuelle E-Mail-Sicherheitsbewertung (0–10) mit einer menschenlesbaren Interpretation und Meldung. Wird bei Bedarf aus zwischengespeicherten Ergebnissen externer Prüfer berechnet, daher kann der erste Aufruf nach einem Cache-Miss langsamer sein. Gibt 503 score_unavailable zurück, wenn sie nicht berechnet werden kann.

Rücksendungen

score, max_score (10), interpretation (z. B. excellent), eine message und computed_at.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/security-score" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "score": 9,
    "max_score": 10,
    "interpretation": "excellent",
    "message": "Your domain is well protected against spoofing and phishing.",
    "computed_at": "2026-06-16T12:30:00Z"
  }
}

Sicherheits-Score-Verlauf abrufen

get /domains/{domain_id}/security-score/history domains:read

Eine abgeleitete Sicherheits-Score-Reihe, berechnet aus Domain Guard-Snapshots, wobei derived_score = passing protocols / 5 × 10. Verwenden Sie diese für eine Trendlinie, wenn Sie die vollständige live-checker-Bewertung nicht benötigen.

Abfrageparameter

  • start_date: OPTIONAL string · date

    Beginn des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig 30 Tage zurück.

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig heute.

  • limit: OPTIONAL integer

    Maximale Anzahl zurückzugebender Zeilen (1–100, Standard: 10).

Rücksendungen

max_score, eine erläuternde note und ein history-Array aus Datenpunkten (derived_score, protocols_passing/total_protocols, result, scanned_at).
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/security-score/history?limit=30" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "max_score": 10,
    "note": "Derived from Domain Guard protocol coverage.",
    "history": [
      {
        "derived_score": 8,
        "protocols_passing": 4,
        "total_protocols": 5,
        "result": "Protected",
        "scanned_at": "2026-06-16T03:00:00Z"
      }
    ]
  }
}

E-Mail-Volumen abrufen

get /domains/{domain_id}/mail-volume domains:read

Täglicher Verlauf des E-Mail‑Volumens, abgeleitet aus DMARC‑Aggregatdaten: Anzahl zugestellter / in Quarantäne befindlicher / abgelehnter Nachrichten sowie tägliche DMARC‑Ergebnisse (Bestanden/Nicht bestanden) und zusammengefasste Gesamtsummen für den gesamten Zeitraum.

Abfrageparameter

  • start_date: OPTIONAL string · date

    Beginn des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig 30 Tage zurück.

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig heute.

Rücksendungen

Ein totals-Objekt und ein timeline-Array, wobei jeder Eintrag durch date indiziert ist und Volumen sowie Anzahlen für bestanden/nicht bestanden enthält.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/mail-volume?start_date=2026-05-01&end_date=2026-06-01" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "start_date": "2026-05-01",
    "end_date": "2026-06-01",
    "totals": {
      "total": 18432,
      "delivered": 18010,
      "quarantined": 280,
      "rejected": 142,
      "dmarc_pass": 17980,
      "dmarc_fail": 452
    },
    "timeline": [
      {
        "date": "2026-06-01",
        "total": 612,
        "delivered": 600,
        "quarantined": 8,
        "rejected": 4,
        "dmarc_pass": 600,
        "dmarc_fail": 12
      }
    ]
  }
}

Liste der Versanddienste

get /domains/{domain_id}/sending-services domains:read

Senden von Quellen mit Volumen, DMARC-Metriken, einem compliance-Prozentsatz und einem status von compliant, partial oder failing. Das is_registered_threat-Flag markiert Quellen, die als bösartig bekannt sind.

Abfrageparameter

  • start_date: OPTIONAL string · date

    Beginn des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig 30 Tage zurück.

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig heute.

  • limit: OPTIONAL integer

    Maximale Anzahl zurückzugebender Zeilen (1–100, Standard: 10).

Rücksendungen

Ein Array von services, jeweils mit source_name, dem Metrik-Objekt, compliance, status und is_registered_threat.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/sending-services?limit=10" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "services": [
      {
        "source_name": "Google",
        "total_count": 12040,
        "dmarc": { "pass": 12010, "fail": 30 },
        "compliance": 99.75,
        "status": "compliant",
        "is_registered_threat": false
      }
    ]
  }
}

Fehlgeschlagene Quellen auflisten

get /domains/{domain_id}/failed-sources domains:read

Quellen, die in diesem Zeitraum die DMARC-Ausrichtung nicht erfüllt haben, nach Anzahl der Fehler sortiert. Dies sind die vorrangigsten Quellen zur Untersuchung — entweder legitime Absender, deren Authentifizierung behoben werden muss, oder Fälscher.

Abfrageparameter

  • start_date: OPTIONAL string · date

    Beginn des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig 30 Tage zurück.

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig heute.

  • limit: OPTIONAL integer

    Maximale Anzahl zurückzugebender Zeilen (1–100, Standard: 10).

Rücksendungen

Ein Array von failed_sources mit derselben Struktur wie sending-services, sortiert nach absteigendem Ausfallvolumen.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/failed-sources?limit=10" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "failed_sources": [
      {
        "source_name": "Unknown",
        "total_count": 420,
        "dmarc": { "pass": 0, "fail": 420 },
        "compliance": 0,
        "status": "failing",
        "is_registered_threat": true
      }
    ]
  }
}

Dashboard-Cache abrufen

get /domains/{domain_id}/dashboard-cache domains:read

Gibt die vorab berechnete Dashboard-Snapshot-Payload für die Domain zurück, falls eine vorhanden ist. Dies ist der schnellste Weg, ein Dashboard darzustellen, ohne Aggregate neu zu berechnen. Wenn kein Snapshot vorhanden ist, ist cached false und data null.

Abfrageparameter

  • start_date: OPTIONAL string · date

    Beginn des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig 30 Tage zurück.

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig heute.

Rücksendungen

cached (boolean), cached_at, das angeforderte Zeitfenster und die Snapshot-data-Payload (oder null).
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/dashboard-cache" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "cached": true,
    "cached_at": "2026-06-16T03:05:00Z",
    "start_date": "2026-05-17",
    "end_date": "2026-06-16",
    "data": { "summary": { "total_count": 18432 } }
  }
}

DNS-Timeline-API

Read-only DNS connect/disconnect timeline, current records, record-value history, change events, and stored snapshots. All endpoints are scoped to {domain_id} and require domains:read. Filterable by record_type and start_date/end_date (YYYY-MM-DD).

DNS-Zeitleiste abrufen

get /domains/{domain_id}/dns/timeline domains:read

Eine pro Protokoll-Status-Zusammenfassung (aktueller Status, Zeitstempel der letzten Verbindung/Trennung und Verbindungszahlen) sowie die neuesten Verbindungs-/Trennungs-Ereignisse. Dies ist die Übersichtsansicht, wie sich jeder Protokolleintrag im Laufe der Zeit verbunden und getrennt hat.

Abfrageparameter

  • record_type: OPTIONAL string

    Filtere Ereignisse nach einem der folgenden: dmarc, spf, mta_sts, tls_rpt, bimi.

  • action: OPTIONAL string

    Auf connected oder disconnected filtern.

  • start_date: OPTIONAL string · date

    Beginn des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig 30 Tage zurück.

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig heute.

  • limit: OPTIONAL integer

    Maximale Anzahl zurückzugebender Zeilen (1–100, Standard: 10).

Rücksendungen

Eine summary mit dem Protokoll als Schlüssel und ein events-Array (id, record_type, action, record_value, status_before/status_after, occurred_at).
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/dns/timeline?limit=50" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "summary": {
      "dmarc": {
        "current_status": "connected",
        "last_connected": "2026-05-02T10:15:00Z",
        "last_disconnected": null,
        "connection_count": 2,
        "disconnection_count": 1
      }
    },
    "events": [
      {
        "id": 5521,
        "record_type": "dmarc",
        "action": "connected",
        "record_value": "v=DMARC1; p=reject; rua=mailto:rua@example.com",
        "status_before": "disconnected",
        "status_after": "connected",
        "occurred_at": "2026-05-02T10:15:00Z"
      }
    ]
  }
}

Aktuelle DNS-Einstellungen abrufen

get /domains/{domain_id}/dns/current domains:read

Der aktuelle Zustand jedes Protokolleintrags: Verbindungsstatus, Verifizierungs-Flag, Zeitstempel der letzten Verbindung/Trennung und der zuletzt bekannte Eintragswert. SPF meldet zusätzlich seinen DNS-lookup_count (die Grenze von 10 DNS-Lookups ist für die Gültigkeit relevant).

Rücksendungen

Eine protocols-Map, nach Protokoll indiziert, jeweils mit current_status, verified, status, last_connected/last_disconnected und record_value.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/dns/current" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "protocols": {
      "dmarc": {
        "current_status": "connected",
        "verified": true,
        "status": "valid",
        "last_connected": "2026-05-02T10:15:00Z",
        "last_disconnected": null,
        "record_value": "v=DMARC1; p=reject; rua=mailto:rua@example.com"
      },
      "spf": {
        "current_status": "connected",
        "verified": true,
        "record_value": "v=spf1 include:_spf.google.com -all",
        "lookup_count": 3
      }
    }
  }
}

DNS-Verlauf abrufen

get /domains/{domain_id}/dns/history domains:read

Eine einheitliche, paginierte, chronologische Historie der Eintrags-Werte — vereint DMARC- und SPF-Momentaufnahmen, damit Sie genau sehen können, was jeder Eintrag zu jedem Zeitpunkt enthalten hat. SPF-Zeilen enthalten lookup_count.

Abfrageparameter

  • record_type: OPTIONAL string

    Auf dmarc oder spf beschränken (Standard: beide).

  • start_date: OPTIONAL string · date

    Beginn des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig 30 Tage zurück.

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig heute.

  • page: OPTIONAL integer

    Seitennummer, 1-basiert (Standard: 1).

  • limit: OPTIONAL integer

    Einträge pro Seite (1–100, Standard 25).

Rücksendungen

Ein paginiertes Array von Verlaufszeilen (record_type, record_value, occurred_at; bei SPF kommt lookup_count hinzu) sowie pagination.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/dns/history?record_type=spf&page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": [
    {
      "record_type": "spf",
      "record_value": "v=spf1 include:_spf.google.com -all",
      "lookup_count": 3,
      "occurred_at": "2026-05-02T10:15:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 312,
    "has_more": true
  }
}

DNS-Änderungen auflisten

get /domains/{domain_id}/dns/changes domains:read

Ein paginierter Feed von Verbindungs-/Trennungs-Änderungsereignissen über alle Protokolle hinweg, mit dem Statusübergang (status_beforestatus_after). Verwenden Sie dies für einen auditartigen Aktivitätsfeed zur DNS‑Gesundheit.

Abfrageparameter

  • record_type: OPTIONAL string

    Eines von dmarc, spf, mta_sts, tls_rpt, bimi.

  • action: OPTIONAL string

    Auf connected oder disconnected filtern.

  • start_date: OPTIONAL string · date

    Beginn des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig 30 Tage zurück.

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig heute.

  • page: OPTIONAL integer

    Seitennummer, 1-basiert (Standard: 1).

  • limit: OPTIONAL integer

    Einträge pro Seite (1–100, Standard 25).

Rücksendungen

Ein paginiertes Array von Änderungsereignissen (id, record_type, action, record_value, status_before/status_after, occurred_at) sowie pagination.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/dns/changes?action=disconnected&page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": [
    {
      "id": 5520,
      "record_type": "spf",
      "action": "disconnected",
      "record_value": null,
      "status_before": "connected",
      "status_after": "disconnected",
      "occurred_at": "2026-04-28T08:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 312,
    "has_more": true
  }
}

DNS-Snapshots auflisten

get /domains/{domain_id}/dns/snapshots domains:read

Die rohen gespeicherten Snapshot-Zeilen, nach Record-Typ gruppiert. Im Gegensatz zu /dns/history (das zusammenführt und paginiert) gibt dies die zugrunde liegenden Snapshot-Arrays dmarc und spf getrennt zurück.

Abfrageparameter

  • record_type: OPTIONAL string

    Auf dmarc oder spf beschränken (Standard: beide).

  • start_date: OPTIONAL string · date

    Beginn des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig 30 Tage zurück.

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD). Standardmäßig heute.

  • limit: OPTIONAL integer

    Maximale Anzahl zurückzugebender Zeilen (1–100, Standard: 10).

Rücksendungen

Ein dmarc-Array und ein spf-Array mit Snapshot-Zeilen (id, record_value, occurred_at; bei SPF kommt lookup_count hinzu).
Beispiel
curl -s "https://developers.skysnag.com/api/v1/domains/123/dns/snapshots?limit=50" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "domain_id": 123,
    "fqdn": "example.com",
    "dmarc": [
      {
        "id": 331,
        "record_value": "v=DMARC1; p=reject; rua=mailto:rua@example.com",
        "occurred_at": "2026-05-02T10:15:00Z"
      }
    ],
    "spf": [
      {
        "id": 902,
        "record_value": "v=spf1 include:_spf.google.com -all",
        "lookup_count": 3,
        "occurred_at": "2026-05-02T10:15:00Z"
      }
    ]
  }
}

API für Prüfprotokolle

Read-only account API audit logs — every mutating API request (POST/PUT/PATCH/DELETE) plus sensitive reads are recorded with method, path, status, IP, token, and timestamp. Scoped to the token owner's account and require the account:read scope.

The audit log object

Jeder Endpunkt in diesem Abschnitt gibt Zeilen dieses Formats zurück. action ist ein stabiler, für Menschen lesbarer Bezeichner für die Operation; request_id entspricht der request_id, die im Antwort-Envelope des ursprünglichen Aufrufs zurückgesendet wurde.

Audit-Protokollobjekt
{
  "id": 90122,
  "request_id": "req_8f2c1a4e",
  "action": "domain.hosted_spf.update",
  "method": "PATCH",
  "path": "/api/v1/domains/123/hosted-spf",
  "status_code": 200,
  "ip_address": "203.0.113.24",
  "token_id": 12,
  "token_name": "CI deploy token",
  "user_id": 45,
  "team_id": 9,
  "created_at": "2026-06-16T11:02:33Z"
}

Prüfprotokolle auflisten

get /audit-logs account:read

Paginierte Audit-Protokolle für das Konto, neueste zuerst. Kombinieren Sie Filter, um den Feed einzuschränken — z. B. alle fehlgeschlagenen Schreibvorgänge in einem Datumsbereich.

Abfrageparameter

  • method: OPTIONAL string

    HTTP-Methode, z. B. POST.

  • action: OPTIONAL string

    Exakte Aktionsbezeichnung, z. B.: domain.hosted_spf.update.

  • path: OPTIONAL string

    Teilstring-Abgleich im Anfragepfad.

  • status_code: OPTIONAL integer

    Exakter HTTP-Status, z. B. 200.

  • status_class: OPTIONAL string

    Statusfamilie: 2xx, 3xx, 4xx, 5xx.

  • ip_address: OPTIONAL string

    Exakte Client-IP

  • token_id: OPTIONAL integer

    Auf ein einzelnes API-Token filtern.

  • q: OPTIONAL string

    Freitextsuche über Aktion, Pfad und IP-Adresse.

  • start_date: OPTIONAL string · date

    Inklusiver Fensterbeginn (YYYY-MM-DD).

  • end_date: OPTIONAL string · date

    Ende des inklusiven Zeitfensters (YYYY-MM-DD).

  • page: OPTIONAL integer

    Seitennummer (Standard: 1).

  • limit: OPTIONAL integer

    Einträge pro Seite (1–100, Standard 25).

Rücksendungen

Ein paginiertes Array von Audit-Log-Objekten sowie ein pagination-Objekt.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/audit-logs?page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": [
    {
      "id": 90122,
      "request_id": "req_8f2c1a4e",
      "action": "domain.hosted_spf.update",
      "method": "PATCH",
      "path": "/api/v1/domains/123/hosted-spf",
      "status_code": 200,
      "ip_address": "203.0.113.24",
      "token_id": 12,
      "token_name": "CI deploy token",
      "user_id": 45,
      "team_id": 9,
      "created_at": "2026-06-16T11:02:33Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 312,
    "has_more": true
  }
}

Audit-Protokoll abrufen

get /audit-logs/{log_id} account:read

Ruft einen einzelnen Audit-Log-Eintrag per ID ab, auf das Konto beschränkt. Gibt 404 not_found zurück, wenn der Eintrag nicht zum authentifizierten Konto gehört.

Pfadparameter

  • log_id: erforderlich integer

    Die ID des Eintrags im Prüfprotokoll.

Rücksendungen

Ein einzelnes Audit-Log-Objekt.
Beispiel
curl -s "https://developers.skysnag.com/api/v1/audit-logs/90122" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token"
Antwort
{
  "data": {
    "id": 90122,
    "request_id": "req_8f2c1a4e",
    "action": "domain.hosted_spf.update",
    "method": "PATCH",
    "path": "/api/v1/domains/123/hosted-spf",
    "status_code": 200,
    "ip_address": "203.0.113.24",
    "token_id": 12,
    "token_name": "CI deploy token",
    "user_id": 45,
    "team_id": 9,
    "created_at": "2026-06-16T11:02:33Z"
  }
}

Token-Verwaltung

GET /auth/tokens tokens:read

Listet die aktiven Tokens des Kontos auf. Unterstützt page und limit.

cURL
curl -s "https://developers.skysnag.com/api/v1/auth/tokens?page=1&limit=25" \
  -H "Accept: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here"
POST /auth/tokens tokens:write

Token erstellen. Der vollständige Wert wird einmalig in data.plain_text zurückgegeben.

FeldTypBeschreibung
Name erforderlichstringToken-Bezeichnung
Zugriffsbereiche erforderlichArray von ZeichenkettenVon GET /auth/scopes
Läuft in {n} Tagen abGanzzahlOptional 1–365 Tage
cURL
curl -s "https://developers.skysnag.com/api/v1/auth/tokens" \
  -X POST \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Api-Token: sk_snag_your_token_here" \
  -d '{
    "name": "CI token",
    "scopes": ["account:read"],
    "expires_in_days": 90
  }'