Verify a deployment
A deployed app is behind authentication, so a normal curl request returns 401.
With keelson app curl and keelson preview, you can fetch paths from the app
while authenticated as yourself. AI agents also use this route to verify that a
deployment succeeded.
keelson app curl
Section titled “keelson app curl”Send a single authenticated request.
keelson app curl / # GET /keelson app curl -i /api/items # Also show headerskeelson app curl /api/items --method POST \ --data '{"name":"example"}' \ --header 'Content-Type: application/json'keelson app curl /upload --form title=example --form photo=@sample.png- The response body goes to standard output, while the method, URL, and status go
to standard error. With
-i, headers also go to standard error, so you can redirect only the body to a file - The default method is
GET. If you explicitly selectPOST,PUT,PATCH, orDELETEwith--method, Keelson uses a write-enabled credential that is valid for 5 minutes --datacan only be used with a write method. Use@filenameto read the data from a file- With
--form, the method becomesPOST, and the CLI sets the multipartContent-Type(you cannot override it with--header) - The path must start with
/. Absolute URLs and paths starting with//are rejected. Redirects are not followed - You can also check
/__keelson/media/...and/__keelson/assets/...withGETorHEAD - To target an app outside the current directory, use
--app <slug>
Check the Content-Type as well as the status. If the SPA fallback handles a
request for a nonexistent JavaScript file, the response can be 200 with a
text/html content type.
keelson preview
Section titled “keelson preview”Issue a credential directly when you want to use another HTTP client, make multiple requests, or choose the credential lifetime.
keelson preview # GET / HEAD only; 30 minutes by defaultkeelson preview --ttl 5mkeelson preview --allow-writes # Also allows POST / PUT / PATCH / DELETE; 5 minutes by default, 10 minutes maximumkeelson preview --json # Credential, URL, and expiration time as JSONUse the token and app_url fields from --json with another HTTP client. Pass
the credential as a Bearer token:
curl --header 'Authorization: Bearer <token>' '<app_url>/api/items'The credential is displayed once on standard output, and Keelson does not save
it. Do not include it in logs or reports. Each user can have one credential
issued by keelson preview per app. Issuing another replaces and revokes the
previous one, even if it has not expired. keelson app curl uses a separate
internal credential and does not revoke the credential issued by preview.
Apps deployed by someone else
Section titled “Apps deployed by someone else”If you did not create the deployment currently serving traffic, the command
shows an approval URL to open in a browser. After approval, rerun the same
command with the displayed --confirmation <id> option.
What this check does and does not tell you
Section titled “What this check does and does not tell you”- It only tells you which HTTP response the app returned to an authenticated request. It does not verify that the app’s business logic is correct
- Static sites have no write target, so write methods are rejected
- If the app implements side effects in a
GEThandler, Keelson cannot prevent those side effects. Do not use a preview check on such a path