Projects organize captures and hold signing secrets for signed URLs.

Endpoints

MethodPathPurpose
GET/v1/projectsList projects.
POST/v1/projectsCreate a project.
GET/v1/projects/{id}Get one project.
PATCH/v1/projects/{id}Update name or domain.
POST/v1/projects/{id}/defaultMake project default.
GET/v1/projects/{id}/signing-secretReveal signing secret.
POST/v1/projects/{id}/signing-secret/rotateRotate signing secret.
POST/v1/projects/{id}/brand/refreshRefresh project brand context.
GET/v1/projects/{id}/brand/statusCheck brand status.

Create project

bash
curl -X POST "https://screenframed.com/v1/projects" \ -H "Authorization: Bearer $SCREENFRAMED_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "domain": "example.com", "name": "Example marketing site", "make_default": true }'
201
json
{ "project": { "id": "prj_01K...", "name": "Example marketing site", "domain": "example.com", "brand": null, "brand_status": "pending", "brand_error": null, "is_default": true, "created_at": "2026-04-27 15:00:00", "updated_at": "2026-04-27 15:00:00" }, "signing_secret": "..."}

Signed URLs

Use /v1/projects/{id}/signing-secret to read the current secret and /rotate to replace it. See Signed URLs.

Signing secrets should only be used from your backend. Rotate immediately if a secret is exposed.

Ask a question... ⌘I