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

# Create a project

`POST /projects`

## Request

- Base URL: `https://api.rendley.com/v1`
- URL: `https://api.rendley.com/v1/projects`
- Auth: API key in header `Authorization`

Create a new project, optionally from a template. workspace_id may be omitted when the account has exactly one workspace. template_id takes a Rendley template or a user template. `fields` sets a user template's fields by key or path (see GET /templates/{id}); a media field takes a public https URL, which is imported into the project.

## Request body

- TypesCreateProjectInput
  - `agent_prompt` string: AgentPrompt, when set, is stored on the project and prefilled into the assistant when the editor opens (MCP draft handoff).
  - `agent_skill` string: AgentSkill, when set with AgentPrompt, pre-selects that workflow skill in the assistant's picker so the handoff prompt runs pinned to it.
  - `fields` object: Values for the template's fields, by key or path. Requires template_id.
  - `name` string: Max matches the projects.name column (VARCHAR(255)). Defaults to the template's name when template_id is set.
  - `template_id` string
  - `workspace_id` string: Optional when the account has exactly one workspace — the project is created there. Required once a second workspace exists.

## Response `200`

OK

- object
  - `data` object: Success data
    - `agent_prompt` string: Handoff prompt the editor prefills into the assistant; cleared on send.
    - `agent_skill` string: Handoff workflow skill (a name from GET /agent/skills) the editor pre-selects in the assistant's skill picker alongside AgentPrompt.
    - `created_at` string
    - `created_by` string
    - `deleted_at` string
    - `fit_duration` number
    - `id` string
    - `last_viewed_at` string
    - `name` string
    - `project_json` string
    - `template` TypesTemplateDefinition
      - `fields` TypesTemplateFieldDefinition[]
        - `alias` string: Name the author gave the field in the editor.
        - `clip_id` string: Clip a media field was promoted from.
        - `group` string: The clip, media or canvas the field belongs to.
        - `key` string: Name in POST /projects `fields`; the path when unset.
        - `label` string
        - `path` string, required: Document path, e.g. clips.<id>.text or media.<id>.url.
        - `property_id` string: Editor panel field and right-sidebar step that render it.
        - `step` string
      - `version` integer
    - `template_mode` boolean: Set on projects started from a template: the editor opens the fields form.
    - `thumbnail_url` string
    - `updated_at` string
    - `version` integer
    - `workspace_id` string
  - `error` HttpResponseAPIError
    - `code` string
    - `fields` HttpResponseFieldError[]
      - `field` string
      - `message` string
    - `message` string
  - `meta` unknown

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: TEMPLATE_NOT_FOUND

---

[API](https://skmtc.dev/rendley/apis/rendley-api.md) - [All operations](https://skmtc.dev/rendley/apis/rendley-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rendley/apis/rendley-api/revisions/7eb8713bbf78?raw)
