Skip to content

Projects

A project is the unit of work on Frontend — a codebase with its own files, git history, environment, and (optionally) a database. Projects belong to a team; a team API key can act on any of the team’s projects.

GET /api/v1/projects

Returns the team’s projects, newest first. Pass ?q= to search by handle or title.

Terminal window
curl "https://www.frontend.co/api/v1/projects?q=store" \
-H "Authorization: Bearer $FRONTEND_API_KEY"
{ "projects": [
{ "id": "", "handle": "my-store", "title": "My Store", "framework": "next",
"published": true, "created_at": "", "updated_at": "" }
] }
await client.projects.list()
await client.projects.list({ query: 'store' })
GET /api/v1/projects/{id}

Returns { project } including version, published, and last_deployed_at.

await client.projects.get(projectId)
POST /api/v1/projects

Body: title (required). Optionally seed from a source (git, zip, files, or template) and attach Shopify credentials.

Terminal window
curl -X POST https://www.frontend.co/api/v1/projects \
-H "Authorization: Bearer $FRONTEND_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "title": "My Store" }'
await client.projects.create({ title: 'My Store' })

Returns { project } with 201.

DELETE /api/v1/projects/{id}

Permanently deletes the project. Returns { deleted: id }.

await client.projects.delete(projectId)
POST /api/v1/projects/{id}/publish → { published: true, handle }
POST /api/v1/projects/{id}/unpublish → { published: false }

Publishing makes the project reachable at its public handle URL. To build and ship to production, see Deploys.

await client.projects.publish(projectId)
await client.projects.unpublish(projectId)
POST /api/v1/projects/{id}/lint

Runs prettier + build validation across the project and returns { success, totalFiles, errors }.

const { success, errors } = await client.projects.lint(projectId)