Integraties

Formulier-gate

Een token uit de browser van de bezoeker, gecheckt door je server met het secret van de site.

Een token uitgeven

POST/v1/gate/token
Geen sleutel nodig1 verzoek per niet-gecachte bezoeker

Parameters

  • sitekeystringVerplicht

    De sitekey van de formulier-gate, uit het dashboard.

  • signalsobjectVerplicht

    Browserkenmerken van gate.js: headless_flags, user_agent en client.

Antwoordvelden

  • tokenstring

    Token voor eenmalig gebruik in het formulier. Verloopt na vijf minuten.

  • expiresAtstring

    Wanneer het token verloopt, ISO 8601.

  • errorstring

    Bij een fout: 403 hostname_mismatch (de Origin van de pagina staat niet bij de hostnamen van de gate), 404 unknown_site, 429 rate_limit_exceeded of quota_exhausted. gate.js verstuurt het formulier dan zonder token.

curl -X POST https://ipscanner.io/v1/gate/token \
  -H "Origin: https://shop.example.com" \
  -H "Content-Type: application/json" \
  -d '{
    "sitekey": "site_4fQ8nZ2kLm7xR1vT9cBw",
    "signals": {
      "headless_flags": {
        "webdriver": false,
        "headless_ua": false
      },
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 Safari/605.1.15"
    }
  }'
Antwoord
{
  "token": "Z3RfNGZROG5aMmtMbTd4UjF2VDljQnd8MTc2MDAwMDAwMHxrM3Z4.Qm9yZGVyIGNvbGxpZQ",
  "expiresAt": "2026-10-09T09:35:00Z"
}

Een token verifiëren

POST/v1/gate/verify
Site-secretTelt niet mee

Parameters

  • secretstringVerplicht

    Het secret van de formulier-gate. Alleen op de server, nooit in een pagina.

  • tokenstringVerplicht

    De waarde ipscanner-token die het formulier stuurde.

  • remote_ipstring

    Het IP van de bezoeker zoals je server het ziet. Optioneel, bepaalt ip_match.

Antwoordvelden

  • successboolean

    True als het token geldig en ongebruikt is.

  • classstring

    verified_bot, malicious_automation, ai_agent, tor, vpn, proxy, relay, hosting of human.

  • actionstring

    De actie van je beleid voor de klasse: allow, flag of block.

  • modestring

    monitor of enforce. In monitor-modus beslis je zelf wat je met een block doet.

  • confidencenumber

    Betrouwbaarheid van 0 tot 1.

  • networkobject

    classification, anonymized, provider en vpn_provider. provider en vpn_provider vanaf Starter, null op Free.

  • network.vpn_providerstring | null

    VPN-dienst van een vpn-adres (NordVPN, Mullvad...), indien bekend. Vanaf Starter, null op Free.

  • signalsstring[]

    De automatiseringskenmerken die afgingen, zoals webdriver. Leeg bij een gewone bezoeker.

  • hostnamestring

    De hostnaam van de pagina waarvoor het token is uitgegeven.

  • issued_atstring

    Wanneer het token is uitgegeven, ISO 8601.

  • ip_matchboolean

    False als remote_ip is meegestuurd en afwijkt van het adres waarvoor het token is uitgegeven.

  • lockedstring[]

    Paden (met punten) van de velden die op dit abonnement als null worden verzonden. Ontbreekt vanaf Starter.

  • planRequiredstring

    Abonnement dat de vergrendelde velden bevat. Ontbreekt vanaf Starter.

  • errorstring

    Bij success false: 400 missing_token, invalid_token, expired_token, already_used of hostname_mismatch; 401 invalid_secret.

curl -X POST https://ipscanner.io/v1/gate/verify \
  -H "Content-Type: application/json" \
  -d '{
    "secret": "gs_YOUR_GATE_SECRET",
    "token": "Z3RfNGZROG5aMmtMbTd4UjF2VDljQnd8MTc2MDAwMDAwMHxrM3Z4.Qm9yZGVyIGNvbGxpZQ",
    "remote_ip": "203.0.113.7"
  }'
Antwoord
{
  "success": true,
  "class": "human",
  "action": "allow",
  "mode": "enforce",
  "confidence": 0.6,
  "network": {
    "classification": "residential_clean",
    "anonymized": false,
    "provider": null,
    "vpn_provider": null
  },
  "signals": [],
  "hostname": "shop.example.com",
  "issued_at": "2026-10-09T09:30:00Z",
  "ip_match": true
}