You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
apiGet sends params as ?input=<JSON> instead of named query params — all GET commands with parameters fail (400) #48
Any CLI command that maps to a GET endpoint with query parameters fails:
dokploy compose one --composeId <valid-id> --json
# Request failed with status code 400
This affects every "read one" / "search" style command across the API (compose one, application one, project one, mysql one, registry one, *.search, *.readLogs, etc. — anything backed by a GET with query params in openapi.json). Commands backed by POST (deploy, delete, update, create) are unaffected.
This wraps all params into one JSON-encoded input query string — the convention for calling tRPC procedures directly. But the REST surface this CLI actually targets (per its own openapi.json) expects each parameter as its own named query key, e.g. ?composeId=<id>, not a JSON blob under input.
Confirmed directly: the same request, same auth, sent as a plain named query param instead of through the CLI, succeeds:
curl -s -H "x-api-key: $DOKPLOY_AUTH_TOKEN" \
"https://<host>/api/compose.one?composeId=<valid-id>"# returns the full object correctly
Ran into this too on 0.30.2 — every GET command with params 400s for me (read-logs, *.one, search, ...), POST stuff like deploy works fine.
Tried the fix suggested here and it didn't work for me, server still returns 400 with "Invalid input: expected object, received undefined" when passing named query params to /trpc/.
What did work: wrapping the params in { json: ... } before encoding:
Hitting the plain REST routes directly also works — GET /api/application.readLogs?applicationId=...&tail=5 returns 200 — so fixing it that way could work too if that matches openapi.json better.
Activity
refactor(cli): migrate to Bun and target the REST API
R-udren commentedon Aug 29, 2026
Ran into this too on 0.30.2 — every GET command with params 400s for me (
read-logs,*.one,search, ...), POST stuff like deploy works fine.Tried the fix suggested here and it didn't work for me, server still returns 400 with
"Invalid input: expected object, received undefined"when passing named query params to/trpc/.What did work: wrapping the params in
{ json: ... }before encoding:Hitting the plain REST routes directly also works —
GET /api/application.readLogs?applicationId=...&tail=5returns 200 — so fixing it that way could work too if that matchesopenapi.jsonbetter.