---
title: "Generate a project"
method: POST
path: "/projects/generate"
tags: ["Projects"]
---

# Generate a project

`POST /projects/generate`

Generate a new project from a text prompt using AI. Returns a job ID to poll with Get job status until it completes.

## Request body

- object
  - `prompt` string, required — A detailed description of the project to generate.
  - `templateId` string — ID of one of your team's templates to base the project on. The template's design is preserved exactly and its slides are reproduced with your content. Only team templates are supported.
  - `referenceImageUrls` string[] — Public image URLs to use as visual inspiration.
  - `model` 'google/gemini-3.6-flash' | 'openai/gpt-5.6-sol:xhigh' — Generation model. Defaults to Gemini 3.6 Flash.

## Response `200`

Job created

- object
  - `jobId` string, required — Poll this ID with the status endpoint.
  - `status` 'processing' | 'completed' | 'failed', required
  - `editorUrl` string, uri, nullable, required — URL to open the project in the Faces editor.
  - `estimatedDuration` string, required — Estimated generation time. ~120s with a team template, 240s from scratch.
  - `projectId` string, nullable, required
  - `projectSlug` string, nullable, required
  - `templateId` string

## Other responses

- `400` — Validation error
- `401` — Authentication required
- `402` — Insufficient credits to start a generation
- `404` — Template not found or not accessible
- `429` — Rate limit exceeded (50 requests per minute)
- `502` — Generation could not be dispatched

## Changes

- **2026-08-01** `83197d741969` — 1 breaking, 2 warning, 4 info
  - the response property `editorUrl` became nullable for the status `200`
  - added the new `completed` enum value to the `status` response property for the response status `200`
  - added the new `failed` enum value to the `status` response property for the response status `200`
  - added the new optional request property `model`
  - …3 more
- **2026-07-26** `f99acde20c79` — 1 info
  - added the media type `application/json` for the response with the status `429`

[Change history](https://skmtc.dev/faces/apis/faces-api/changes/projects/generate/post.md)

---

[API](https://skmtc.dev/faces/apis/faces-api.md) · [All operations](https://skmtc.dev/faces/apis/faces-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/faces/faces-api/revisions/83197d741969/schema)
