|| "en_GB"

Snabbstart

Få din API-nyckel och gör din första förfrågan på under 5 minuter.

1Hämta din API-nyckel

Registrera dig för ett gratis konto för att få din API-nyckel direkt, eller prova vår live-demo först.

Din API-nyckel ser ut så här: sk_live_abc123...

2Gör din första förfrågan

Välj ditt föredragna språk:

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

3Hantera svaret

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

poäng: 0-30

Låg risk - tillåt vanligtvis

poäng: 31-70

Mellanrisk - granskning rekommenderas

poäng: 71-100

Hög risk - neka vanligtvis

Integrationsguide

Produktionsklara klientimplementationer med felhantering, omförsökslogik och bästa praxis.

⚠️

Kritiskt: Ange alltid en timeout!

Anropas aldrig Scorika API synkront i köp- eller registreringsflöden utan en timeout. Om vårt API är långsamt eller otillgängligt ska dina kunder inte blockeras.

Rekommenderad timeout: 3–5 sekunder

Fallback-beslut: granska (tillåt + asynkron kontroll)

Bästa praxis

✓ Gör

  • • Ange timeout (3-5s) på alla API-anrop
  • • Implementera fallback för timeouts/fel
  • • Använd miljövariabler för API-nycklar
  • • Logga case_ids för felsökning

✗ Gör inte

  • • Blockera inte köpflöden vid API-fel
  • • Gör inte synkrona anrop utan timeout
  • • Exponera inte API-nycklar i kod på klientsidan
  • • Lagra inte råa API-svar med personuppgifter (PII)

Exempel på klienter för produktion

Kopiera en av dessa produktionsklara klienter:

# 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})")

Felhantering

Implementera alltid korrekt felhantering för produktionsbruk:

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;}

Autentisering

Alla API-förfrågningar kräver autentisering med en API-nyckel som skickas i headern X-Api-Key.

Säkerhetsmeddelande: Exponera aldrig din API-nyckel i kod på klientsidan. Gör alltid API-anrop från din server.

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

Felhantering

API:et använder standard HTTP-statuskoder och returnerar fel i ett konsekvent JSON-format.

StatusBeskrivning
200Lyckat
400Ogiltig förfrågan - Felaktiga parametrar
401Obehörig - Ogiltig API-nyckel
403Förbjudet - Saknar behörighet
429Anropsgräns överskriden
500Internt serverfel

Exempel på felsvar

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

Evaluate risk for a given set of inputs and return a risk score with decision.

Request Body

ParameterTypRequiredDescription
emailstringNo*Email address to evaluate
ipstringNo*IP address (IPv4 or IPv6)
domainstringNo*Domain name to check
urlstringNo*Full URL to analyze

* At least one input parameter is required.

E-post-signal

E-post-signalen analyserar e-postadresser för olika riskindikatorer.

Orsakskoder

disposable_email

E-posten kommer från en känd leverantör av tillfällig e-post

free_provider

E-posten kommer från en gratisleverantör (Gmail, Yahoo, etc.)

valid_mx

Domänen har giltiga MX-poster

IP-signal

IP-signalen analyserar IP-adresser för VPN, proxy och andra riskindikatorer.

Orsakskoder

tor_exit_node

IP-adressen är en känd Tor exit node

vpn_detected

IP-adressen tillhör en känd VPN-leverantör

residential

IP-adressen verkar vara en hemanslutning

Domän-signal

Domän-signalen analyserar domännamn med avseende på ålder, rykte och andra indikatorer.

Orsakskoder

newly_registered

Domänen registrerades inom de senaste 30 dagarna

young_domain

Domänen är yngre än 6 månader

established_domain

Domänen är äldre än 1 år

SDKs & Developer Tools

Official SDKs, API collections, and developer tools to speed up your integration.

🐍

Python SDK

pip install scorika

Official Python client with async support, type hints, and retry logic.

Python 3.8+Kommer snart
📦

Node.js SDK

npm install @scorika/client

TypeScript-first SDK with full type definitions and ESM support.

Node 18+Kommer snart
💎

Ruby Gem

gem install scorika

Rails-friendly gem with ActiveSupport integration.

Ruby 3.0+Kommer snart

Developer Tools