unknown_params

The request included a parameter that is not in the allowlist for this endpoint.

HTTP 400The request was malformed.

When it fires

The request included a query string parameter that the endpoint does not accept. Repull endpoints have an allowlist — anything not on the list is rejected explicitly so typos and stale code surface immediately rather than silently doing nothing. Common triggers:

  • Camel-case vs snake-case mismatch (e.g. check_in on an endpoint that expects checkIn).
  • A parameter that exists on a sibling endpoint but not on this one (e.g. sending cursor to an endpoint that uses page).
  • A parameter from an older API version that has been removed.
  • A copy-paste typo (limt instead of limit).

Response shape

Every Repull error follows the same envelope. The code is stable and safe to switch on.

{
  "error": {
    "code": "unknown_params",
    "message": "<human-readable explanation of what went wrong>",
    "docs_url": "https://repull.dev/docs/errors/unknown_params"
  }
}

How to fix

  1. Read err.message — it lists the parameter(s) it did not recognize.
  2. Compare against the parameter table on the endpoint's API Reference page.
  3. If you are migrating from another vendor, run through the parameter mapping doc — Calry / Hostaway / etc. each name things slightly differently.
  4. Remove the unknown parameter (or rename it) and retry.

Common gotchas

  • Allowlist enforcement is strict by design. A silently-ignored param is the worst kind of bug — your code looks like it is filtering, but the server is returning everything. Repull surfaces this loudly so you catch it in development.
  • Headers are not covered by this code. Unknown headers are silently ignored, which matches HTTP convention.
  • If you are calling Repull through the Calry-compatibility schema, you can keep using Calry parameter names on supported endpoints — see Migrate from Calry.

Examples

curl

# Bad: typo'd 'limt'
curl "https://api.repull.dev/v1/listings?limt=10" \
  -H "Authorization: Bearer sk_test_YOUR_KEY"

# {
#   "error": {
#     "code": "unknown_params",
#     "message": "Unknown parameter(s): limt"
#   }
# }

# Good
curl "https://api.repull.dev/v1/listings?limit=10" \
  -H "Authorization: Bearer sk_test_YOUR_KEY"

TypeScript

import { Repull } from '@repull/sdk'

const repull = new Repull({ apiKey: process.env.REPULL_KEY! })

try {
  // SDKs are typed, so this would fail at compile time. Hand-rolled
  // requests can still trip the runtime allowlist:
  await repull.request('GET', '/v1/listings?limt=10')
} catch (err: any) {
  if (err.code === 'unknown_params') {
    console.error('Typo or stale param:', err.message)
  }
  throw err
}

If you're an AI agent

You sent a parameter that does not exist on this endpoint. Read err.message for the offending name. Drop it (or rename it to the correct one from the API Reference) and retry.

Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.

AI