Uploads
Get an upload
Where a publish is now. Poll this after a 202; site is set once it's live.
AuthorizationBearer <token>
An API key from Settings in the dashboard (fpk_...), or an OAuth access token from the MCP sign-in.
In: header
Path Parameters
uploadIdstring
The uploadId from a publish or from POST /uploads.
Format
uuidResponse Body
curl -X GET "https://flatpage.app/v1/uploads/497f6eca-6276-4993-bfeb-53cbbbba6f08"{
"uploadId": "8d0c6f1e-2b7a-4f0e-b1c4-5e9a7d3c2f10",
"status": "published",
"site": {
"id": "3f5e2a90-6b1d-4c1e-9a43-0d6c2f8e7b21",
"slug": "spring-menu",
"title": "Spring menu",
"kind": "html",
"status": "active",
"url": "https://spring-menu.flatpage.page",
"version": 1,
"bytes": 48213,
"updatedAt": "2026-11-02T15:40:00Z",
"views": 128,
"passwordProtected": false,
"noindex": false,
"share": {
"title": "string",
"description": "string",
"image": "string",
"imagePending": true,
"faviconPending": true,
"preview": {
"title": "string",
"description": "string",
"imageUrl": "string",
"faviconUrl": "string"
}
},
"notifyUnlock": true,
"spaMode": "auto",
"pdfDownload": true,
"emailGate": {
"enabled": true,
"headline": "string",
"consent": "string"
},
"feedbackMode": true,
"formsEnabled": true,
"routing": {
"spaDetected": true,
"has404": true,
"redirects": 0,
"warnings": [
"string"
]
}
},
"warnings": [
"string"
]
}{
"error": "site not found"
}{
"error": "site not found"
}{
"error": "site not found"
}{
"error": "site not found"
}{
"error": "site not found"
}Delete a site DELETE
Take a site offline and delete it. The link stops working at once.
Start a big upload POST
Step 1 of the two-step upload for files over 25 MB (PDFs on Plus go up to 500 MB). Answers a signed `putUrl`: PUT the file there with exactly the `contentType` given (step 2), then call `POST /uploads/{uploadId}/complete` (step 3). The URL expires after 15 minutes.