Skip to main content

1. Get an API key

Keys are created in the FIL portal under API Keys. Each key has a tier, up to your plan’s, so you can keep a Verify key for quick checks beside an Assess key for full analysis; each call costs its key’s tier’s credits. The tier is applied server-side, so the key is all you send. While you build, create a key with Mode: Test: it scores the published test subjects with fixed answers, free. Keys look like filk_… and are shown once at creation. Store it in a secret manager.

2. Score a number

Subjects are E.164: +, country code, subscriber number — no national trunk zero. Send +443444930787, not +44 (0)344…. A trunk zero won’t error; it will quietly resolve to no numbering range and score as unattested.
Use a test key for this first call. +447700900123 is one of the published test subjects: it plays a number from an unallocated range (an impossible caller-ID) whose range risk is elevated, and a test key always returns the answer below. When you’re ready to score real numbers, switch to a live key. What comes back depends on your tier:
Verify answers with the score, band, action and reason code, plus the subject block, but not the evidence behind them. The number sits in an unallocated range (allocated: false), so it scores high / step_up_auth. suppressed lists what Assess adds.
The API reference lists every field, and How scoring works explains what each tier computes.

3. Read the three answers

Every response answers in three layers: A clean number reads differently: band: "minimal", recommended_action: "allow", every component clean or unmatched — and, from Assess, coverage tells you how much reporting stood behind that answer. A low score with thin coverage means unwatched, not clean.

4. Retrieve the evidence later

Every score is retained for 13 months and retrievable by its score_id, with the key that scored it:
Scores also appear in the portal’s Activity page as they happen.

Next

  • How scoring works — bands, tiers, coverage, degradation.
  • Errors and limits — rate limits, credits, idempotency, retries.
  • API reference — the full contract. It’s served by the API itself at /v1/openapi.yaml, so it can never drift from deployed behaviour; point any OpenAPI tool at it to generate a client.