API quick start

Updated Oct 20262 min read

The filtrat API lets you do from code what you do in the app: verify and find work emails, capture leads from LinkedIn, watch posts and events, score and enrich lists. Every endpoint lives under https://api.filtrat.io/v1 and takes and returns JSON.

This guide gets you from no key to your first two results in a few minutes.

1. Create an API key

  1. In the app, open API in the sidebar.
  2. Press Create key, give it a name you'll recognise later (for example Production or CRM sync) and press Create.
  3. Copy the key. It starts with ak_ and is shown only once.
Important

Keep the key out of front-end code, public repositories and shared documents. Anyone with the key can spend your credits. If it leaks, revoke it on the same page and create a new one.

2. Verify an email

Replace ak_your_key with your key:

Terminal
curl -X POST https://api.filtrat.io/v1/verify/email \
  -H "Authorization: Bearer ak_your_key" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane.doe@acme.com"}'

The answer comes back in the same response. The fields you'll use most:

FieldWhat it tells you
statusverified, invalid, catchall, risky or unknown
diagnosisWhy, when the address isn't verified
disposable, role_accountA throwaway address, or a shared one like info@
domain_intelligence.catch_allThe domain accepts mail for any address
credits_used, credits_remainingWhat this call cost and what's left

A verified or invalid result costs 1. Catch-all, risky and unknown results are free. Add "resolve_catchall": true to turn a catch-all result into verified or invalid (5 more, only when it gets a clear answer). See What each result means.

3. Find an email

Terminal
curl -X POST https://api.filtrat.io/v1/finder/search \
  -H "Authorization: Bearer ak_your_key" \
  -H "Content-Type: application/json" \
  -d '{"first_name": "Jane", "last_name": "Doe", "domain": "acme.com", "company_name": "Acme"}'

Read found_email and status (found or not_found). An email found costs 20, or 25 when it needed catch-all resolution. Not found is free. Finding an email behind a catch-all domain with resolve_catchall on (the default) costs 5 on top of the found email: 20 + 5 = 25. The 25 are held when the request starts. If the email isn't found, they're all given back, so a not-found costs nothing. If the email is found on a domain that didn't need resolution, the extra 5 are given back and you pay 20.

Tip

Always send company_name when you have it, and linkedin_url too. They help when the website's domain doesn't receive mail, and complete a shortened last name like "Jane D.". See Why add the company name.

4. Go further

To do thisStart with
Verify a whole listPOST /v1/bulk/jobs/from-list, then follow the job
Find emails for many peoplePOST /v1/bulk-finder/jobs/from-list, then follow the job
Save people from a Sales Navigator search, a post or an eventPOST /v1/capture-jobs/
Check your balanceGET /v1/credits/balance

Anything with many rows runs in the background as a job. Long-running jobs explains how to start one, follow it and read its rows.

Every endpoint, field and example is in the full API reference.

Prefer not to write code?

Was this helpful?
Still stuck?

Email support@filtrat.io with the list or job name and what you expected to see.

Contact support
MYKHAILO BURIAK · NIP: 8982334042 · REGON: 544788490 · ul. Mieszczańska 18/40, 50-201 Wrocław, Poland© 2026 filtrat.io