Skip to content
Leadtime
English
Esc
navigateopen⌘Jpreview

Create project

Creates a new project in the workspace.

Project Types:

  • Single Projects: One-off initiatives with defined start and finish
  • Ongoing Projects: Continuous activities with recurring tasks

Internal vs External:

  • External Projects: Set organizationId to link to a client organization. These are billable customer projects.
  • Internal Projects: Set organizationId to null. These are non-billable company activities.

Required Fields:

  • name: Project name
  • type: Project type (Single or Ongoing)
  • valueGroup: Value classification (A-D)
  • categoryId: Project category UUID
  • statusId: Project status UUID
  • users: Array of user IDs (at least one)
  • taskTypes: Array of task type IDs (at least one)
  • activities: Array of activity IDs (at least one)

Reference Data:

  • categoryId: use GET /projects/categories
  • statusId: use GET /projects/statuses
  • phaseId: use GET /projects/phases
  • organizationId: use GET /organizations
  • users/defaultAccountableId/responsibleId: use User.id from GET /workspace/users
  • teams: use GET /teams
  • taskTypes: use GET /tasks/types or GET /administration/task-settings/types
  • activities: use GET /administration/task-settings/activities
  • customFields: use configured project custom-field IDs from GET /administration/project-settings/custom-fields; values must match their definition types and do not create native scheduling, relationship, or billing behavior

Optional Fields:

  • phaseId: Required for external single projects, optional otherwise
  • organizationId: Required for external projects, must be null for internal projects
  • description: HTML or Markdown (will be converted to internal format)
  • icon: Icon identifier in the format :icon_name: (e.g., :rocket:, :shopping_cart:, :mobile_phone:). Use standard emoji short names or custom icon names.
  • deadline: ISO 8601 date string
  • defaultAccountableId: Default accountable user UUID
  • responsibleId: Responsible user UUID
  • teams: Array of team IDs
  • customFields: Key-value pairs keyed by configured project custom-field ID; values must match each definition type
  • tags: Array of tag strings
  • guestAccess: Whether organization members can access (only for external projects)

Description Format: The description field accepts HTML or Markdown and will be automatically converted to the internal IDoc format. When retrieved later, it will be returned as HTML.

POST/projects
Authorization
AuthorizationOAuth2 access token · headerrequired
Scopes:api:write
or
AuthorizationBearer token (JWT) · headerrequired
Query parameters
fieldsToReturnstring
Comma-separated list of top-level response fields to return. Overrides the endpoint compact default unless responseShape=full is used.
responseShapestring
Advanced override. Omit for the endpoint compact default. Use full only when you need the complete endpoint response, including nested fields that are not selectable with fieldsToReturn.
Allowed:compactfull
Header parameters
LT-Response-Shapestring
Advanced override. Set to full only when you need the complete endpoint response, including nested fields that are not selectable with fieldsToReturn.
Allowed:full
Request body
requiredapplication/json
activitiesstring[]required
Array of time activity UUIDs that can be used when logging time in this project (e.g., Development, Testing, Management, Research). At least one activity must be specified. Use GET /administration/task-settings/activities to retrieve available activities.
categoryIdstringrequired
UUID of the project category. Categories classify projects by functional area or project type (e.g., Onboarding, Support, Implementation). Use the GET /projects/categories endpoint to retrieve available categories.
customFieldsobjectrequired
Custom field values as key-value pairs. Keys should match custom field IDs configured in workspace settings. Values must match the field type (string, number, boolean, date, etc.). Use GET /administration/project-settings/custom-fields to retrieve available project custom fields and their configurations.
deadlineobject
Project deadline date in ISO 8601 format (e.g., "2024-12-31T23:59:59.000Z"). Optional target completion date for the project.
defaultAccountableIdobject
UUID of the user who is accountable for the project by default. This user will be set as accountable on new tasks created in this project unless overridden. Use the GET /workspace/users endpoint to retrieve available users.
descriptionstringrequired
Accepts Markdown or HTML for complex formatting. This content is rendered by the Leadtime rich editor, not by a plain Markdown viewer. For quick/simple text, Markdown is acceptable. For polished user-facing content from an agent or integration, prefer structured HTML because it preserves editor blocks, links, and layout more predictably. Use only the nodes and marks documented below for this field. Supported editor features differ by endpoint and field. Choose formatting for readability, not decoration: use headings for real sections, paragraphs for narrative text, lists or tables for structured facts, blockquotes for quoted context, callouts for important outcomes/risks/notes when supported, and explicit anchors for links. Do not rely on bare URLs or Markdown links when the link must be clickable; use explicit anchors such as <a href="https://example.com" target="_blank" rel="noopener noreferrer nofollow">link text</a>. In HTML you can use: ## Node Types and Marks ### Nodes **paragraph** Type: block Content: inline* (inline only — do not use block tags such as <p> inside; use e.g. <br>, <strong>, <em>, <span>…) Default paragraph. extraPlaceholder is an internal structure for the editor to show a ghost placeholder in empty “template” lines (ProseMirror JSON fragment or null). For normal agent output leave extraPlaceholder as null. Only set it if you are intentionally mirroring a field placeholder the user already has in the open editor; do not set random placeholder data for free-form answers. Atts: - extraPlaceholder: null ```html <p class="paragraph-base" extraplaceholder="null/some-value"></p> ``` **heading** Type: block Content: inline* (inline only — do not use block tags such as <p> inside; use e.g. <br>, <strong>, <em>, <span>…) Atts: - level: 1 ```html <h1 class="heading-base"></h1> ``` **bulletList** Type: block list Content: listItem+ Atts: none ```html <ul class="list-base"><li></li></ul> ``` **hardBreak** Type: inline Atts: none ```html <br> ``` **horizontalRule** Type: block Atts: none ```html <hr class="hr-base"> ``` **orderedList** Type: block list Content: listItem+ Atts: - start: 1 - type: null ```html <ol class="order-list-base" type="null/some-value"><li></li></ol> ``` **listItem** Content: (paragraph|list)* (paragraphs and/or lists, in any order) Atts: none ```html <li></li> ``` **blockquote** Type: block Content: block+ (one or more block child nodes (e.g. paragraph, list, …)) Atts: none ```html <blockquote class="blockquote-base"><p class="paragraph-base"></p></blockquote> ``` ### Marks **link** Atts: - href: null - target: _blank - rel: noopener noreferrer nofollow - class: null - title: null ```html <a target="_blank" rel="noopener noreferrer nofollow" href="">link text example</a> ``` **bold** Atts: none ```html <strong>bold text example</strong> ``` **code** Atts: none ```html <code>code text example</code> ``` **italic** Atts: none ```html <em>italic text example</em> ``` **strike** Atts: none ```html <s>strike text example</s> ``` **underline** Atts: none ```html <u>underline text example</u> ``` The description will be automatically converted from HTML/Markdown to the internal IDoc format. When retrieved later via GET, it will be returned as HTML. Also accepts ProseMirror IDoc JSON (object or string).
guestAccessbooleanrequired
Whether organization members (guests) can access this project. Only applicable for external (client) projects. When enabled, members of the linked organization can view and interact with the project and its tasks.
default: false
iconstring
Visual identifier for the project. Must be in the format `:icon_name:` (e.g., `:rocket:`, `:shopping_cart:`, `:mobile_phone:`). This icon is displayed in project lists and throughout the application. You can use standard emoji short names (e.g., `:rocket:` for 🚀, `:shopping_cart:` for 🛒) or custom icon names created in the workspace.
namestringrequired
Full name of the project. This is the primary display name used throughout the application.
organizationIdobject
UUID of the organization (client). Required for external projects - must be set to link the project to a client organization. Must be null for internal projects. Use the GET /organizations endpoint to retrieve available organizations.
phaseIdobject
UUID of the project phase. Phases represent distinct stages within a project lifecycle (e.g., Planning, Development, Testing). Required for external single projects, optional otherwise. Use the GET /projects/phases endpoint to retrieve available phases.
responsibleIdobject
UUID of the user who is responsible for the project (e.g., project manager, sales manager). Use the GET /workspace/users endpoint to retrieve available users.
statusIdstringrequired
UUID of the project status. Statuses represent the current progress stage of a project (e.g., Sales, Implementation, Billing, Done). Use the GET /projects/statuses endpoint to retrieve available statuses.
tagsstring[]
Array of tag strings for categorizing and filtering projects. Tags can represent topics, teams, or work types. Tags make it easier to filter and organize projects in the project overview.
taskTypesstring[]required
Array of task type UUIDs that can be used in this project (e.g., Feature, Bug, Management, Server issue). At least one task type must be specified. Use GET /tasks/types or GET /administration/task-settings/types to retrieve available task types.
teamsstring[]
Array of team UUIDs assigned to the project. All members of these teams will have access to the project. Use the GET /teams endpoint to retrieve available teams.
typestringrequired
Project type determines the project structure and workflow. Single projects are one-off initiatives with defined start and finish, usually planned and billed as quoted. Ongoing projects are continuous activities where tasks are handled and billed based on effort.
Allowed:SingleSupport
usersstring[]required
Array of user UUIDs who are direct project members and have access to this project. These users can see the project, be assigned to project tasks, create or edit tasks, and log time on tasks in the project. Include every employee who should work on, be assigned to, or log time on this project; do not include only managers unless managers are the only people who need project access. At least one user must be assigned. Use the GET /workspace/users endpoint to retrieve available users.
valueGroupstringrequired
Value group classification indicates how the project contributes to value creation. A - Direct value creation (external customer projects), B - Indirect value creation (internal projects that increase product/service value), C - Not value creating (administrative tasks), D - Waste (unproductive time).
Allowed:DirectValueIndirectValueNonValueWaste
Responses
200
activitiesstring[]required
Array of time activity IDs enabled for the project
archivedAtobject | nullrequired
Archived timestamp
categoryIdstringrequired
ID of the project category
colorstringrequired
Project color (from organization or workspace default)
createdAtstring<date-time>required
Creation timestamp
customFieldsobjectrequired
Custom fields as key-value pairs
deadlineobject | nullrequired
Project deadline
defaultAccountableIdobject | nullrequired
ID of the default accountable user
descriptionstringrequired
Project description (HTML)
editedAtstring<date-time>required
Last edit timestamp
enableExpressQuotationsbooleanrequired
Whether express quotations are enabled
guestAccessbooleanrequired
Whether guest access is enabled
iconobject | nullrequired
Icon/emoji
idstringrequired
Project ID
isFavoritebooleanrequired
Whether the project is marked as favorite by the current user
namestringrequired
Project name
organizationobject | nullrequired
Organization details
Show properties
colorstring
namestring
shortNamestring
organizationIdobject | nullrequired
ID of the organization
phaseIdobject | nullrequired
ID of the project phase
responsibleIdobject | nullrequired
ID of the responsible user
shortNamestringrequired
Project short name (organization prefix + number)
shortNumbernumberrequired
Project short number
statusIdstringrequired
ID of the project status
tagsstring[]required
Array of tags
taskTypesstring[]required
Array of task type IDs enabled for the project
teamsstring[]required
Array of team IDs assigned to the project
typestringrequired
Project type
Allowed:SingleSupport
usersstring[]required
Array of user IDs assigned to the project
valueGroupstringrequired
Value group classification
Allowed:DirectValueIndirectValueNonValueWaste
400Validation errors
errorsobject
messagestring
statusCodenumber
401Unauthorized - Invalid or missing authentication token
403Forbidden - Insufficient API scopes or permissions
Request
curl -X POST "https://leadtime.app/api/public/projects" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "activities": [
    "550e8400-e29b-41d4-a716-44665544000b",
    "550e8400-e29b-41d4-a716-44665544000c"
  ],
  "categoryId": "550e8400-e29b-41d4-a716-446655440000",
  "customFields": {
    "customField1": "value1",
    "customField2": 123
  },
  "deadline": "2024-12-31T23:59:59.000Z",
  "defaultAccountableId": "550e8400-e29b-41d4-a716-446655440004",
  "description": "<h1>Project Description</h1><p>This is a comprehensive project for redesigning our company website.</p>",
  "guestAccess": false,
  "icon": ":rocket:",
  "name": "Website Redesign",
  "organizationId": "550e8400-e29b-41d4-a716-446655440003",
  "phaseId": "550e8400-e29b-41d4-a716-446655440002",
  "responsibleId": "550e8400-e29b-41d4-a716-446655440005",
  "statusId": "550e8400-e29b-41d4-a716-446655440001",
  "tags": [
    "urgent",
    "high-priority"
  ],
  "taskTypes": [
    "550e8400-e29b-41d4-a716-446655440009",
    "550e8400-e29b-41d4-a716-44665544000a"
  ],
  "teams": [
    "550e8400-e29b-41d4-a716-446655440008"
  ],
  "type": "Single",
  "users": [
    "550e8400-e29b-41d4-a716-446655440006",
    "550e8400-e29b-41d4-a716-446655440007"
  ],
  "valueGroup": "DirectValue"
}'
Response
{
  "activities": [
    "550e8400-e29b-41d4-a716-44665544000c",
    "550e8400-e29b-41d4-a716-44665544000d"
  ],
  "archivedAt": null,
  "categoryId": "550e8400-e29b-41d4-a716-446655440001",
  "color": "#FF5733",
  "createdAt": "2024-01-01T00:00:00.000Z",
  "customFields": {
    "customField1": "value1",
    "customField2": 123
  },
  "deadline": "2024-12-31T23:59:59.000Z",
  "defaultAccountableId": "550e8400-e29b-41d4-a716-446655440005",
  "description": "<h1>Project Description</h1><p>This is a comprehensive project.</p>",
  "editedAt": "2024-01-15T10:30:00.000Z",
  "enableExpressQuotations": false,
  "guestAccess": false,
  "icon": "🚀",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "isFavorite": false,
  "name": "Website Redesign",
  "organization": {
    "color": "#FF5733",
    "name": "ACME Corporation",
    "shortName": "ACME"
  },
  "organizationId": "550e8400-e29b-41d4-a716-446655440004",
  "phaseId": "550e8400-e29b-41d4-a716-446655440003",
  "responsibleId": "550e8400-e29b-41d4-a716-446655440006",
  "shortName": "ACME-123",
  "shortNumber": 123,
  "statusId": "550e8400-e29b-41d4-a716-446655440002",
  "tags": [
    "urgent",
    "high-priority"
  ],
  "taskTypes": [
    "550e8400-e29b-41d4-a716-44665544000a",
    "550e8400-e29b-41d4-a716-44665544000b"
  ],
  "teams": [
    "550e8400-e29b-41d4-a716-446655440009"
  ],
  "type": "Single",
  "users": [
    "550e8400-e29b-41d4-a716-446655440007",
    "550e8400-e29b-41d4-a716-446655440008"
  ],
  "valueGroup": "DirectValue"
}