Skip to content
LikeFolio.ai

likefolio.ai hosts the legacy /v1 developer endpoints and the MCP server for existing keys. New API access is sold only by SwanPowers through data.likefolio.com, a separate API with its own base URL and endpoints. Request a trial at https://data.likefolio.com/trial.html (work email, manual review).

Errors

Everything non-2xx the API returns, with the exact JSON shape. FastAPI validation errors (422) nest a list under detail; everything else is either a string or an object with an error slug.

400 Bad request

When: A malformed parameter — bad date format, or an invalid enum value.

{
  "detail": "Dates must be YYYY-MM-DD"
}

Fix: Check the parameter formats in the endpoint reference.

401 Missing key

When: No X-API-Key header (or ?api_key=) on the request.

{
  "detail": "API key required: X-API-Key header (existing keys keep working; new API access: request a trial at data.likefolio.com/trial.html)"
}

Fix: Send your key as the X-API-Key header.

403 Invalid or inactive key

When: The key doesn't exist or was revoked. (The old daily request cap was removed 2026-07-14 — volume is limited only by credits.)

{
  "detail": "Invalid, inactive, or rate-limited API key"
}

Fix: Verify the key in your console, or mint a new one.

403 Ticker outside free coverage

When: A free key requested a ticker outside the top-100 by LikeFolio Score.

{
  "detail": {
    "error": "ticker_not_in_free_coverage"
  }
}

Fix: Use a key whose plan includes it, or wait for your cycle to reset on the 1st.

403 Higher tier required

When: The endpoint needs a higher plan (e.g. You are NOT charged credits for this rejection.

{
  "detail": {
    "error": "quant_tier_required",
    "upgrade": "https://data.likefolio.com/api.html"
  }
}

Fix: Use a key whose plan includes it, or wait for your cycle to reset on the 1st.

404 Not found

When: No data for the requested resource (e.g. an unknown ticker).

{
  "detail": "No scores for XYZ"
}

Fix: Check the ticker; /v1/screener lists covered names.

422 Validation error

When: A numeric parameter breached its bound (e.g. limit above the max) — FastAPI validation.

{
  "detail": [
    {
      "loc": [
        "query",
        "limit"
      ],
      "msg": "Input should be less than or equal to 650",
      "type": "less_than_equal"
    }
  ]
}

Fix: Respect the documented min/max on each parameter.

429 Out of credits

When: There is no post-paid overage — you are never billed for usage you have not prepaid.

{
  "detail": {
    "error": "out_of_credits",
    "tier": "hobbyist",
    "allowance": 5000,
    "used": 5000,
    "prepaid_remaining": 0,
    "options": [
      "buy a prepaid credit pack (you choose the amount)",
      "turn on auto-topup so you never hit this",
      "new API access: data.likefolio.com/api.html"
    ]
  }
}

Fix: Use a key whose plan includes it, or wait for your cycle to reset on the 1st.