Errors

Updated Oct 20263 min read

When a request fails, the API returns an HTTP status code and a JSON body with the same shape every time:

Response
{
  "error": {
    "code": "INSUFFICIENT_CREDITS",
    "message": "Not enough credits ...",
    "detail": {}
  }
}
  • code is stable: branch on it in your code.
  • message is written for people: log it or show it.
  • detail holds extra facts when there are any, such as the plan a feature needs.

Status codes

StatusCodeMeaningWhat to do
400VALIDATION_ERRORThe body or parameters are invalid: a missing field, a wrong type, a value out of rangedetail.errors lists each problem and where it is. Fix the request; don't retry unchanged
422A specific code, for example INVALID_EMAIL_SYNTAXThe request is well formed, but the value can't be processed, such as an address that isn't a valid emailRead code and message; fix the value. Don't retry unchanged
401UNAUTHORIZEDMissing, wrong, revoked or expired API keySee Authentication
402INSUFFICIENT_CREDITSNot enough credits for this actionTop up in Credits & billing, then retry, or resume the job
403PLAN_REQUIREDYour plan doesn't include this featuredetail.required_plan names the plan that does
403FORBIDDENYou can't access this resourceCheck you're using a key from the right account
404NOT_FOUNDNo such resource on your accountCheck the id; it may have been deleted
409CONFLICTThe resource is busy, for example a job already runs on that listWait for it to finish, or stop it first
429RATE_LIMITEDToo many requestsWait the number of seconds in the Retry-After header, then retry. See Rate limits
500INTERNAL_SERVER_ERRORSomething went wrong on our sideRetry once; if it persists, contact support
502, 503, 504SERVICE_UNAVAILABLEA temporary problemRetry with backoff

Which errors to retry

  • Retry with backoff: 429 (after its Retry-After), 502, 503, 504, and a single 500.
  • Don't retry unchanged: 400, 401, 403, 404, 422. The same request will fail the same way.
  • Retry after acting: 402 after topping up, 409 after the running job finishes.

Failed requests aren't charged. You pay only for results, so a request that errors costs nothing.

Validation errors

A request whose body or parameters don't match what the endpoint expects returns 400 with the code VALIDATION_ERROR. detail.errors lists each problem, with where it is (loc) and what's wrong (msg):

Response
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Request validation failed.",
    "detail": {
      "errors": [
        {"loc": ["body", "email"], "msg": "Field required", "type": "missing"}
      ]
    }
  }
}

Plan required

AI features (ICP scoring, targeting, AI columns and outreach openers) need the Growth plan or higher. Signals monitoring and watchers need Pro or higher (or the 2-day free LinkedIn trial, with up to 3 monitors), and each plan includes a set number of monitors. Credit packs aren't a plan: a pack from $25 unlocks AI columns and outreach openers only, so with just a pack, targeting, ICP scoring and signals answer PLAN_REQUIRED with a message such as Targeting is included in the Growth plan and up (credit packs cover AI columns and openers). When your plan doesn't include something, the response says which one does:

Response
{
  "error": {
    "code": "PLAN_REQUIRED",
    "message": "AI features: available on the Growth plan and up. Your free account doesn't include it; upgrade in Credits & billing.",
    "detail": {"required_plan": "Growth"}
  }
}

Reading, cancelling and clearing things you already created keeps working after a downgrade. See What each plan unlocks.

Insufficient credits in a job

A job that runs out of credits partway doesn't fail. Bulk verification and bulk finder jobs stop with stopped, keeping the rows already done; top up and call their resume endpoint. Captures pause and continue by themselves once your balance covers the next person. See Long-running jobs.

Reporting a problem

If an error doesn't make sense, email support@filtrat.io with the endpoint, the time of the request (with time zone), the status code and the full error body. Never include your API key.

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