|| "en_GB"

Rychlý start

Získejte API klíč a proveďte svůj první požadavek za méně než 5 minut.

1Získejte svůj API klíč

Zaregistrujte si bezplatný účet pro okamžité získání API klíče, nebo nejprve vyzkoušejte živé demo.

Váš API klíč vypadá takto: sk_live_abc123...

2Proveďte svůj první požadavek

Vyberte si preferovaný jazyk:

curl -X POST https://api.scorika.com/v1/score \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "user@example.com",
    "ip": "1.2.3.4"
  }'

3Zpracujte odpověď

Odpověď
{
  "data": {
    "case_id": "case_abc123def456",
    "score": 23,
    "decision": "allow",
    "confidence": 0.94,
    "reason_codes": [
      {
        "code": "EMAIL_FREE_MAJOR",
        "severity": "low",
        "score_impact": 5,
        "description": "Free email provider detected"
      }
    ],
    "signals": [
      {
        "type": "email",
        "status": "success",
        "score_delta": 5
      },
      {
        "type": "ip",
        "status": "success",
        "score_delta": 0
      }
    ]
  },
  "meta": {
    "request_id": "req_xyz789",
    "latency_ms": 142
  }
}

skóre: 0-30

Nízké riziko - obvykle povolit

skóre: 31-70

Střední riziko - doporučena kontrola

skóre: 71-100

Vysoké riziko - obvykle zamítnout

Průvodce integrací

Jak integrovat Scorika do vaší platformy.

⚠️

Varování ohledně timeoutu

Nikdy nevolejte Scorika API synchronně v procesu dokončení objednávky nebo registrace bez timeoutu. Pokud je naše API pomalé nebo nedostupné, vaši zákazníci by neměli být blokováni.

Doporučený timeout: 3–5 sekund

Záložní rozhodnutí: kontrola (povolit + asynchronní kontrola)

Osvědčené postupy

✓ Co dělat

  • • Nastavte timeout (3-5s) u všech API volání
  • • Implementujte náhradní řešení (fallback) pro timeouty/chyby
  • • Pro API klíče používejte proměnné prostředí
  • • Logujte case_id pro účely ladění

✗ Co nedělat

  • • Neblokujte proces objednávky při chybě API
  • • Neprovádějte synchronní volání bez timeoutu
  • • Nesdílejte API klíče v kódu na straně klienta
  • • Neukládejte surové API odpovědi obsahující osobní údaje

Příklady z produkce

Zkopírujte jeden z těchto produkčních klientů:

# scorika_client.py - Production-ready Scorika client

import requests
from requests.exceptions import Timeout, RequestException
from dataclasses import dataclass
from typing import Optional, List, Dict, Any
from enum import Enum

class Decision(Enum):
    ALLOW = "allow"
    REVIEW = "review"
    DENY = "deny"

@dataclass
class ScoreResult:
    case_id: Optional[str]
    score: int
    decision: Decision
    confidence: float
    signals: List[Dict]
    fallback: bool = False  # True if using fallback response

class ScorikaClient:
    BASE_URL = "https://api.scorika.com/v1"
    TIMEOUT = 5  # seconds - never block critical flows!

    def __init__(self, api_key: str):
        self.api_key = api_key
        self.session = requests.Session()
        self.session.headers.update({
            "X-Api-Key": api_key,
            "Content-Type": "application/json"
        })

    def score(
        self,
        email: Optional[str] = None,
        ip: Optional[str] = None,
        domain: Optional[str] = None,
        url: Optional[str] = None
    ) -> ScoreResult:
        """Evaluate risk for given inputs with timeout protection."""
        payload = {k: v for k, v in {
            "email": email, "ip": ip, "domain": domain, "url": url
        }.items() if v}

        try:
            response = self.session.post(
                f"{self.BASE_URL}/score",
                json=payload,
                timeout=self.TIMEOUT  # IMPORTANT: Always set timeout!
            )
            response.raise_for_status()
            data = response.json()["data"]

            return ScoreResult(
                case_id=data["case_id"],
                score=data["score"],
                decision=Decision(data["decision"]),
                confidence=data["confidence"],
                signals=data.get("signals", [])
            )
        except (Timeout, RequestException) as e:
            # Fallback: allow but flag for async review
            print(f"Scorika unavailable: {e}, using fallback")
            return ScoreResult(
                case_id=None,
                score=50,
                decision=Decision.REVIEW,
                confidence=0.0,
                signals=[],
                fallback=True
            )

# Usage example
if __name__ == "__main__":
    client = ScorikaClient("sk_live_your_api_key")
    result = client.score(email="user@example.com", ip="1.2.3.4")

    if result.fallback:
        print("⚠ Using fallback - queue for async review")
    elif result.decision == Decision.ALLOW:
        print(f"✓ Allowed (score: {result.score})")
    elif result.decision == Decision.REVIEW:
        print(f"⚠ Review needed (score: {result.score})")
    else:
        print(f"✗ Denied (score: {result.score})")

Řešení chyb

Vždy implementujte správné zpracování chyb pro produkční nasazení:

Error Handling Pattern
try {  const result = await client.score({ email, ip });  // Handle decision} catch (error) {  if (error.status === 429) {    // Rate limited - back off and retry    await sleep(retryAfter * 1000);    return retry();  } else if (error.status >= 500) {    // Server error - allow and log for investigation    console.error('Scorika unavailable, allowing by default');    return { decision: 'allow', fallback: true };  }  throw error;}

Autentizace

Všechny API požadavky vyžadují autentizaci pomocí API klíče předaného v hlavičce X-Api-Key.

Bezpečnostní poznámka: Nikdy nezveřejňujte svůj API klíč v klientském kódu. API volání provádějte vždy ze svého serveru.

curl -H "X-Api-Key: sk_live_your_api_key_here" \     https://api.scorika.com/v1/score

Zpracování chyb

API používá standardní HTTP stavové kódy a vrací chyby v konzistentním formátu JSON.

StavPopis
200Úspěch
400Bad Request - Neplatné parametry
401Unauthorized - Neplatný API klíč
403Forbidden - Chybějící rozsah
429Překročen limit požadavků
500Internal Server Error - Vnitřní chyba serveru

Příklad chybové odpovědi

400 Bad Request
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request parameters",
    "details": [
      {
        "field": "email",
        "code": "INVALID_FORMAT",
        "message": "Email must be a valid email address"
      }
    ],
    "request_id": "req_xyz789",
    "documentation_url": "https://docs.scorika.io/errors/VALIDATION_ERROR"
  }
}

POST /v1/score

Vyhodnoťte riziko pro danou sadu vstupů a získejte rizikové skóre s rozhodnutím.

Tělo požadavku

ParametrTypPovinnéPopis
emailstringNo*E-mailová adresa k vyhodnocení
ipstringNo*IP adresa (IPv4 nebo IPv6)
domainstringNo*Název domény ke kontrole
urlstringNo*Kompletní URL k analýze

* Je vyžadován alespoň jeden vstupní parametr.

Signál e-mailu

Signál e-mailu analyzuje e-mailové adresy z hlediska různých rizikových indikátorů.

Kódy důvodů

disposable_email

E-mail je od známého poskytovatele dočasných e-mailů

free_provider

E-mail je od bezplatného poskytovatele (Gmail, Yahoo atd.)

valid_mx

Doména má platné MX záznamy

IP signál

IP signál analyzuje IP adresy na přítomnost VPN, proxy a dalších rizikových indikátorů.

Kódy důvodů

tor_exit_node

IP adresa je známý výstupní uzel Tor

vpn_detected

Detekována VPN

residential

IP adresa se jeví jako rezidenční připojení

Signál domény

Signál domény analyzuje názvy domén z hlediska stáří, reputace a dalších indikátorů.

Kódy důvodů

newly_registered

Doména byla registrována během posledních 30 dnů

young_domain

Doména je mladší než 6 měsíců

established_domain

Doména je starší než 1 rok

SDK a vývojářské nástroje

Oficiální SDK, kolekce API a vývojářské nástroje pro urychlení vaší integrace.

🐍

Python SDK

pip install scorika

Oficiální Python klient s podporou async, type hints a logikou opakování.

Python 3.8+Již brzy
📦

Node.js SDK

npm install @scorika/client

TypeScript-first SDK s kompletními definicemi typů a podporou ESM.

Node 18+Již brzy
💎

Ruby Gem

gem install scorika

Gem přátelský k Rails s integrací ActiveSupport.

Ruby 3.0+Již brzy

Vývojářské nástroje