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 error.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_live_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_live_YOUR_KEY"TypeScript
// The SDK's typed methods only send parameters they know about, so this
// usually comes from a hand-built URL like the one below.
const res = await fetch('https://api.repull.dev/v1/listings?limt=10', {
headers: { Authorization: `Bearer ${process.env.REPULL_API_KEY}` },
})
if (!res.ok) {
const { error } = await res.json()
if (error.code === 'unknown_params') {
// error.validParams lists every accepted name; error.did_you_mean may suggest one
console.error('Typo or stale param:', error.message, error.validParams)
}
throw new Error(`${error.code}: ${error.message}`)
}If you're an AI agent
You sent a parameter that does not exist on this endpoint. Read error.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