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_inon an endpoint that expectscheckIn). - A parameter that exists on a sibling endpoint but not on this one (e.g. sending
cursorto an endpoint that usespage). - A parameter from an older API version that has been removed.
- A copy-paste typo (
limtinstead oflimit).
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
- Read err.message — it lists the parameter(s) it did not recognize.
- Compare against the parameter table on the endpoint's API Reference page.
- If you are migrating from another vendor, run through the parameter mapping doc — Calry / Hostaway / etc. each name things slightly differently.
- 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.
Related
- Error reference — the full table of error codes
- Using Repull from AI agents — patterns for handling errors in agent loops
- Migrate from Calry
- API Reference
Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.
AI