Leadtime Public API
Versioned public API.
Authentication:
- Personal Access Tokens (PAT): Create/manage in your Profile → API Tokens. Use the raw token once returned to you as Bearer:
Authorization: Bearer <pat>. - OAuth 2.0 (Authorization Code + PKCE): Workspace admin creates an OAuth client in Workspace Settings → API & Integrations, then obtain tokens via the standard OAuth flow. Use the access token as Bearer. Refresh tokens are supported at
/api/oauth/token.
Dynamic Client Registration (RFC 7591): The API supports RFC 7591 compliant dynamic client registration, allowing applications to register OAuth clients programmatically without requiring workspace admin setup.
Registration Endpoint: POST /api/oauth/register
Features:
- Automatically creates OAuth clients with generated
client_idand optionalclient_secret - Clients are auto-installed in workspaces when the API feature is enabled
- Supports multiple authentication methods:
none(public clients),client_secret_post,client_secret_basic - Idempotent registration: If a client with the same name and redirect URIs already exists, the existing client is updated instead of creating a duplicate
- Returns RFC 7591 compliant registration response with client credentials and metadata
Request Body:
redirect_uris(required): Array of redirect URIs for the clientclient_name(optional): Display name for the client (defaults to “Dynamically Registered Client”)client_uri(optional): Homepage URL of the client applicationlogo_uri(optional): Logo URL for the clienttoken_endpoint_auth_method(optional): Authentication method (none,client_secret_post, orclient_secret_basic, defaults tonone)
Response:
client_id: Unique client identifier (format:dcr_<uuid>)client_secret: Client secret (only returned for confidential clients, not fornoneauth method)client_name: Client display nameredirect_uris: Array of allowed redirect URIstoken_endpoint_auth_method: Authentication method usedgrant_types: Supported grant types (authorization_code,refresh_token)response_types: Supported response types (code)client_id_issued_at: Unix timestamp when client was createdclient_secret_expires_at: Expiration timestamp (0 means no expiration)registration_client_uri: URI for client registration management
Discovery:
The registration endpoint URL is available via OAuth 2.0 Authorization Server Metadata at /api/.well-known/oauth-authorization-server (see registration_endpoint field).
Imposter Mode (Testing/Debugging):
⚠️ Permission Required: PublicApi.allowImposterMode
Optional headers for testing and debugging (case-insensitive):
LT_IMPOSTER_USER_ID/lt_imposter_user_id: Override authenticated user with specified user ID. User must exist and belong to the same workspace. Original token permissions are preserved.LT_CUSTOM_NOW/lt_custom_now: Override current time with custom date (ISO 8601 format). Useful for testing time-sensitive operations.
Mutation response projection:
- Create/update endpoints may declare a compact default response, usually identifiers and the primary display field.
- Use
fieldsToReturn=id,name,...to request exact top-level response fields when the endpoint documentsx-lt-response-projection. - Use
responseShape=fullor headerLT-Response-Shape: fullto opt into the complete response object. - Validation and error responses are never projected.
OpenAPI specification downloads:
- JSON
- YAML
- Load either specification into Scalar, Postman, Insomnia, or another OpenAPI client for interactive requests.
Example:
curl -X GET "https://api.example.com/api/public/account/info" \
-H "Authorization: Bearer <token>" \
-H "LT_IMPOSTER_USER_ID: user-123" \
-H "LT_CUSTOM_NOW: 2024-01-15T10:00:00Z"
Base URL: https://leadtime.app/api/public
https://leadtime.app/api/publicaccount
- POSTUpdate email notification preferences
- GETGet employee bank account information
- POSTUpdate employee bank account information
- GETGet employee profile data
- POSTUpdate employee profile data
- GETGet sick days history
- POSTRequest sick days
- PUTUpdate sick days record
- DELETEDelete sick days record
- GETGet vacation compensation history
- GETGet future vacation requests
- GETGet vacation request history
- POSTRequest vacation
- GETGet vacation statistics
- PUTUpdate vacation request
- DELETECancel vacation request
- GETGet list of favorites
- POSTToggle favorite on/off
- GETGet current user information
- GETGet journal entries
- PUTUpdate journal entry
- POSTCreate journal entry
- DELETEDelete journal entry
- PATCHPartially update journal entry
- POSTUpdate preferred language
- GETGet user notifications
- POSTMark all notifications as read
- POSTMark notification as read
- GETGet organization member profile data
- POSTUpdate organization member profile data
- GETGet overtime compensation history
- GETGet overtime statistics
- GETList all time trackers
- POSTCreate new time tracker
- GETGet single time tracker
- DELETEDelete time tracker
- PATCHUpdate existing time tracker
- POSTPause running time tracker
- POSTResume paused time tracker
- POSTUpdate workspace color preference
administration
- GETGet workspace appearance settings
- PATCHUpdate workspace appearance settings
- GETGet workspace basic settings
- PATCHUpdate workspace basic settings
- GETGet company settings
- PATCHUpdate company settings
- GETList custom icons
- POSTCreate custom icon
- PUTUpdate custom icon
- DELETEDelete custom icon
- GETGet document settings
- PATCHUpdate document settings
- GETList document templates
- POSTCreate document template
- GETGet document template details
- PUTUpdate document template
- DELETEDelete document template
- PATCHPartially update document template
- GETList email accounts
- POSTCreate IMAP email account
- GETGet email account details
- PUTUpdate IMAP email account
- DELETEDelete email account
- PATCHPartially update IMAP email account
- POSTTest email receiving
- POSTTest email sending
- GETList form categories
- POSTCreate form category
- POSTReorder form categories
- PUTUpdate form category
- DELETEDelete form category
- GETList form templates
- POSTCreate form template
- GETList form categories and templates (read-only, for attaching forms to tasks)
- POSTReorder form templates
- GETGet form template with fields
- PUTUpdate form template
- DELETEDelete form template
- GETList fields for a form template
- POSTCreate form template field
- POSTReorder fields on a form template
- PUTUpdate form template field
- DELETEDelete form template field
- GETList all object custom field definitions (admin)
- POSTCreate object custom field (admin)
- POSTReorder object custom fields for an object type (admin)
- PUTUpdate object custom field (admin)
- DELETEDelete object custom field (admin)
- GETList organization custom fields
- POSTCreate organization custom field
- POSTReorder organization custom fields
- PUTUpdate organization custom field
- DELETEDelete organization custom field
- GETLook up permission definitions for the authenticated caller
- GETList available permissions
- GETList product catalog
- POSTCreate product
- GETGet product details
- PUTUpdate product
- DELETEDelete product
- PATCHPartially update product
- GETList product categories
- POSTCreate product category
- POSTRestore default product categories
- POSTReorder product categories
- GETGet product category details
- PUTUpdate product category
- DELETEDelete product category
- PATCHPartially update product category
- POSTCreate a new component library component
- POSTDuplicate a component within the library
- POSTRecalculate all estimates for a library component
- GETGet component library component details
- DELETEDelete (soft delete) a component library component
- PATCHPartially update a component library component
- GETGet component library item details
- POSTCreate or update a question for a library component item
- POSTReorder questions within a library component item
- DELETEDelete a question from a library component item
- PATCHPartially update a question for a library component item
- POSTCreate a new test case (acceptance test step) for a library component item
- POSTReorder testcases within an item
- DELETEDelete a testcase (soft delete)
- PATCHUpdate an existing testcase
- POSTCreate a new todo (checklist item) for a library component item
- POSTReorder todos within an item
- DELETEDelete a todo (soft delete)
- PATCHUpdate an existing todo
- POSTCreate a new component item (Epic, Work Package, Todo List, or Test Suite)
- DELETEDelete (soft delete) a component library item
- PATCHPartially update a component library item
- GETGet component library tree structure
- POSTMove/reorder items in component library tree
- GETList project categories
- POSTCreate project category
- POSTReorder project categories
- GETGet project category details
- PUTUpdate project category
- DELETEDelete project category
- PATCHPartially update project category
- GETList project custom fields
- POSTCreate project custom field
- POSTReorder project custom fields
- PUTUpdate project custom field
- DELETEDelete project custom field
- GETList project phases
- POSTCreate project phase
- POSTReorder project phases
- GETGet project phase details
- PUTUpdate project phase
- DELETEDelete project phase
- PATCHPartially update project phase
- POSTRestore default project settings
- GETList project statuses
- POSTCreate project status
- POSTReorder project statuses
- GETGet project status details
- PUTUpdate project status
- DELETEDelete project status
- PATCHPartially update project status
- POSTCreate support contingent
- PUTUpdate support contingent
- DELETEDelete support contingent
- PATCHPartially update support contingent
- GETList support contingents for a project
- GETList roles
- POSTCreate role
- GETGet role details
- PUTUpdate role
- DELETEDelete role
- PATCHPartially update role
- PUTReplace role permissions
- PATCHToggle single permission
- GETGet workspace subscription and billing status
- GETGet task auto-generation settings
- PUTUpdate task auto-generation settings
- GETGet work activities
- POSTCreate or update work activity
- POSTReorder work activities
- PUTUpdate work activity
- DELETEDelete work activity
- GETGet task custom fields
- POSTCreate task custom field
- POSTReorder task custom fields
- PUTUpdate task custom field
- DELETEDelete task custom field
- POSTRestore default task settings
- GETGet task statuses
- POSTCreate or update task status
- POSTReorder task statuses
- PUTUpdate task status
- DELETEDelete task status
- PATCHPartially update task status
- GETGet task types
- POSTCreate task type
- POSTReorder task types
- PUTUpdate task type
- DELETEDelete task type
- PATCHPartially update task type
- GETList all VAT rates
- POSTCreate VAT rate
- PUTUpdate VAT rate
- DELETEDelete VAT rate
agent-chats
- GETList agent chats
- GETGet agent chat details
- DELETEDelete an agent chat
- PATCHRename an agent chat
- PATCHPin or unpin an agent chat
agent-connectors
agent-sessions
- GETGet an agent session
- GETList agent session activities
- POSTAppend activity to an agent session
- GETGet agent session context for a self-hosted wrapper
- GETGet diagnostic details for an agent session
- PATCHUpdate agent session status
- GETGet sanitized agent session transcript
- GETList agent session webhook deliveries
- GETList agent sessions for a task
agents
- GETList agents
- POSTCreate an agent
- GETList native Leadtime agent models
- POSTSave project-level hosted-agent overrides
- POSTValidate resolved project-level hosted-agent settings
- GETList project-level hosted-agent overrides
- GETList saved hosted-agent provider API keys
- POSTCreate a saved hosted-agent provider API key
- DELETEDelete a saved hosted-agent provider API key
- GETList workspace custom agent skills
- POSTCreate a workspace custom agent skill
- DELETEArchive a workspace custom agent skill
- PATCHUpdate a workspace custom agent skill
- GETGet agent details
- DELETEDelete an agent
- PATCHUpdate an agent
- GETGet selected agent settings
- GETList app chats with an agent
- GETGet Claude Managed Agent settings for an agent
- POSTSave Claude Managed Agent settings for an agent
- POSTDisconnect GitHub from a Claude Managed agent
- POSTCreate a GitHub App installation URL for Claude Managed GitHub access
- POSTRefresh GitHub repositories available to a Claude Managed agent
- POSTCreate an OAuth connect URL for a Claude Managed custom MCP server
- POSTRefresh Claude model choices for an agent
- POSTRefresh Claude agents, environments, vaults, and models for an agent
- POSTList Anthropic and workspace agent skills for Claude configuration
- POSTValidate Claude Managed Agent credentials
- POSTSet agent connection provider
- POSTCreate a one-time connector setup token for an agent
- GETGet Cursor Cloud settings for an agent
- POSTSave Cursor Cloud settings for an agent
- POSTRefresh Cursor Cloud model choices for an agent
- POSTRefresh Cursor Cloud repository choices for an agent
- POSTValidate Cursor Cloud credentials
- GETGet native custom-agent settings for an agent
- POSTSave native custom-agent settings for an agent
- POSTCreate or update a native custom-agent MCP connection
- DELETEDelete a native custom-agent MCP connection
- POSTDisconnect native custom-agent MCP credentials
- POSTCreate an OAuth connect URL for a native custom-agent MCP connection
- GETList personal access tokens for an agent
- POSTCreate a personal access token for an agent
- DELETERevoke a personal access token for an agent
- GETList sessions for an agent
- GETGet self-hosted agent settings
- POSTSave self-hosted agent settings
- POSTEnable or disable the self-hosted agent connection
- POSTRotate the self-hosted agent webhook secret
- PATCHEnable or disable an agent
attendance
automations
- GETList automations
- POSTCreate automation
- POSTTrigger automation via webhook
- GETGet automation details
- PUTUpdate automation
- DELETEDelete automation
- GETList automation runs
- GETGet automation run details
- POSTCreate test run
billing
- POSTCreate a new invoice
- GETGet canceled invoices grid
- GETGet invoice contacts for a project
- GETGet new invoices grid
- GETGet overdue invoices grid
- GETGet paid invoices grid
- POSTSend invoice via email
- POSTSet invoice contact ID
- GETGet invoice details
- DELETEDelete an invoice
- GETGet default invoice texts
- GETGet invoice file URL
- POSTMark invoice as paid
- POSTMark invoice as sent
- POSTMark invoice as unpaid
- POSTMark first reminder as sent
- POSTMark second reminder as sent
- GETGet invoice settings
- PATCHUpdate invoice settings
- GETGet potential invoices
- GETGet potential invoice details
- PATCHUpdate potential invoice settings
- GETGet available contacts for potential invoice
- POSTAdd manual position to potential invoice
- POSTReorder manual positions in potential invoice
- DELETEDelete manual position from potential invoice
- PATCHUpdate manual position in potential invoice
- POSTReset potential invoice
- POSTReorder subscriptions in potential invoice
- POSTChange subscription quantity in potential invoice
- POSTSet task billed time
- POSTSet task billing details
- POSTSet task skip from billing flag
- POSTToggle task skipped status
contacts
employees
- POSTCreate employee
- GETGet employees grid
- GETList employee journal entries
- POSTCreate employee journal entry
- GETGet employee journal entry details
- DELETEDelete employee journal entry
- PATCHPartially update employee journal entry
- GETGet employee details
- DELETEDelete employee
- PATCHUpdate employee
- GETGet employee calendar export (ICS subscription URL)
- POSTRegenerate employee calendar export URL
- GETList employee external calendar imports
- POSTAdd external calendar feed for employee
- DELETERemove employee external calendar feed
- PATCHUpdate employee external calendar feed
- POSTSync employee external calendar feed now
- POSTCreate or update salary entry
- DELETEDelete salary entry
- POSTCreate or update vacation days entry
- DELETEDelete vacation days entry
- POSTCreate or update weekly working time entry
- DELETEDelete weekly working time entry
help-center
- GETGet help center article content
- GETSearch help center articles
- GETGet the help center table of contents
helpdesk
- GETGet email accounts with helpdesk status
- DELETEDisable helpdesk for email account
- POSTEnable helpdesk for email account
- GETGet specific email account helpdesk settings
- PUTUpdate email account helpdesk settings
- GETGet organization helpdesk settings (deprecated)
- GETGet organization helpdesk settings
- PUTUpdate organization helpdesk settings
- GETGet workspace helpdesk settings
- PUTUpdate workspace helpdesk settings
holidays
- GETGet available holiday countries
- POSTAdd holiday day
- PUTUpdate holiday day
- DELETEDelete holiday day
- GETGet holiday settings
- PUTUpdate holiday settings
- GETGet holiday year
- POSTCreate custom holiday year
- PUTUpdate holiday year
- DELETEDelete custom holiday year
imports-management
- GETGet imports grid
- POSTUpload CSV file and generate AI mappings
- GETGet import details
- POSTPreview import results without persisting data
- POSTExecute import and persist data
- PUTUpdate all import mappings in bulk
insights
- GETGet goal insights data in structured JSON format
- GETGet project insights data in structured JSON format
- GETGet staff insights data in structured JSON format
- GETGet turnover insights data in structured JSON format
- GETGet workload insights data in structured JSON format
object-types
- GETList object types (admin)
- POSTCreate object type (admin)
- POSTReorder object types (admin)
- GETGet object type with statuses and custom fields (admin)
- PUTUpdate object type (admin)
- DELETEDelete object type (admin, soft delete). Allowed even when object instances exist; instances keep objectTypeId pointing at the soft-deleted type.
- GETList statuses for an object type (admin)
- POSTCreate object status (admin)
- POSTReorder statuses for an object type (admin)
- PUTUpdate object status (admin)
- DELETEDelete object status (admin, soft delete)
objects
- GETList objects (visibility rules apply)
- POSTCreate object
- POSTAssign objects to an organization
- POSTAssign objects to a project
- POSTUnassign an object from its organization
- POSTUnassign an object from its project
- GETList object file categories (workspace-wide)
- POSTCreate or update an object file category
- DELETESoft-delete an object file category
- POSTLink an object to a task
- POSTLink multiple objects to one task
- POSTRemove the link between an object and a task
- GETGet object by id
- PUTUpdate object
- DELETESoft-delete object
- GETList files attached to an object
- POSTAttach a file to an object
- GETDownload a file attached to an object
- DELETERemove an object file attachment
- GETAudit history for an object (paginated, newest first)
- GETList journal entries for an object (paginated grid)
- POSTCreate object journal entry
- GETGet one object journal entry
- PUTUpdate object journal entry
- DELETEDelete object journal entry (soft delete)
- GETList tasks linked to an object
organizations
- GETList organizations
- POSTCreate organization
- GETList organization letters
- POSTCreate organization letter
- GETGet organization letter details
- DELETEDelete organization letter
- PATCHPartially update organization letter
- GETList organization members
- POSTCreate organization member
- GETList organization member journal entries
- POSTCreate organization member journal entry
- GETGet organization member journal entry details
- DELETEDelete organization member journal entry
- PATCHPartially update organization member journal entry
- GETGet organization member details
- DELETEDelete organization member
- PATCHUpdate organization member
- GETGet organization details
- PUTUpdate organization
- DELETEDelete organization
- PATCHPartially update organization
- PATCHUpdate organization custom fields
- GETGet organization document settings
- PATCHUpdate organization document settings
- GETGet organization invoice settings
- PATCHUpdate organization invoice settings
- GETList objects for an organization
projects
- GETList projects
- POSTCreate project
- GETList all project categories
- GETList project documentation articles
- POSTCreate a new project documentation article
- GETGet project documentation article details
- DELETEDelete a project documentation article
- PATCHPartially update a project documentation article
- GETList project journal entries
- POSTCreate project journal entry
- GETGet project journal entry details
- DELETEDelete project journal entry
- PATCHPartially update project journal entry
- GETList all project phases
- GETList all project statuses
- GETList project uploads
- POSTCreate project upload
- GETGet project upload details
- DELETEDelete project upload
- PATCHPartially update project upload
- GETGet project details
- DELETEDelete project
- PATCHPartially update project
- GETGet active subscriptions for a project
- GETGet project billing settings
- PATCHUpdate project billing settings
- GETGet project component overview
- GETGet current project configuration state
- GETGet project document settings
- PATCHUpdate project document settings
- GETList objects assigned to a project
- GETList support contingents with details for a project
- GETGet detailed period-by-period breakdown of support contingents
- GETList all versions for a project
- POSTCreate a new project version
- GETGet version details
- POSTRestore project to a previous version
- POSTCreate a new component in a project
- GETGet project component details
- POSTImport components from library into project
- GETGet project component item details
- POSTCreate a new test case (acceptance test step) for a component item
- PATCHUpdate an existing todo
- GETGet component tree for a specific project
- POSTMove/reorder items in project component tree
- DELETEDelete (soft delete) a component in a project
- PATCHPartially update a project component
- POSTDuplicate a component within the same project
- POSTExport a project component to the library
- POSTRecalculate all estimates for a project component
- GETList documents for a project
- POSTCreate new document
- GETGet available contact persons for document creation
- GETGet preview formatted offer number for new document
- GETGet document details
- DELETEDelete document
- PATCHPartially update document
- GETList project interim payments
- POSTCreate interim payment
- POSTReorder interim payments
- DELETEDelete interim payment
- PATCHPartially update interim payment
- POSTCreate a new component item (Epic, Work Package, Todo List, or Test Suite)
- DELETEDelete component item
- PATCHPartially update a component item
- POSTCreate a new question for a component item
- POSTReorder questions within a component item
- PATCHPartially update an existing question
- POSTAnswer a question in a project component item
- DELETEDelete a question from a project component item
- POSTConnect component item to task
- POSTDisconnect a component item from its associated task(s)
- POSTGenerate tasks from a component item
- POSTSort test cases within a component item
- DELETEDelete (soft delete) a test case
- PATCHUpdate an existing test case
- POSTEvaluate a test case
- POSTCreate a new todo (checklist item) for a component item
- POSTSort todos within an item
- DELETEDelete (soft delete) a todo from a component item
- POSTAdd a comment to a todo in a project component item
- POSTToggle todo completion status
- GETList all manual positions for a project
- POSTCreate a new manual position
- POSTReorder manual positions
- DELETEDelete a manual position
- PATCHUpdate an existing manual position
- GETList all products in a project
- POSTImport product from catalog
- POSTReorder products
- GETGet product details
- DELETEDelete product from project
- POSTDuplicate product
- POSTUpdate product settings
- GETList project subscription billings
- POSTCreate project subscription billing
- GETGet products from billing snapshot
- DELETEDelete project subscription billing
- PATCHUpdate project subscription billing
sales
tags
- POSTCreate a new tag
- GETList all tags of specified type
- POSTUpdate an existing tag
- DELETESoft delete a tag
tasks
- POSTCreate a new task
- GETGet big picture data for a project
- POSTReorder task type groups (rows)
- POSTReorder tasks within a group (task type)
- GETList all task custom fields
- GETGet tasks grid
- GETGet pipeline data for date range
- POSTPlan a task (create pipeline item)
- DELETERemove a planned task
- PATCHEdit a planned task
- POSTActivate/deactivate pipeline for a week
- GETGet pool data for an accountable user
- POSTUpdate group/type order within a project in a pool
- POSTUpdate task order within a pool
- POSTUpdate project order within a pool
- GETGet stack data for a user
- GETList all task statuses
- GETList all task types
- GETGet task details by UUID or shortNumber
- DELETEDelete task by UUID or shortNumber
- PATCHUpdate a task
- POSTAdd comment to task
- DELETEDelete task comment
- PATCHUpdate task comment
- POSTDuplicate a task
- GETList express quotations
- POSTCreate express quotation
- GETGet single express quotation
- DELETEDelete quotation
- POSTAccept quotation
- POSTReject quotation
- POSTSend quotation email
- GETList form instances on a task
- POSTAttach a form template to a task
- DELETERemove a form instance from a task
- PATCHUpdate stored values for a form instance
- POSTImport product from catalog to task
- DELETEDelete task product
- PATCHPartially update task product
- POSTUpdate task product settings
- POSTAdd a subtask to a task
- DELETERemove a subtask from a task
teams
- GETList all teams
- POSTCreate a new team
- GETGet team details
- DELETEDelete a team
- PATCHPartially update a team
time
timebookings
- POSTCreate a new time booking
- GETGet time bookings grid
- DELETEDelete a time booking
- PATCHUpdate an existing time booking
vacations
- GETGet vacation history grid
- GETGet pending vacation requests
- GETGet upcoming approved vacations
- POSTApprove a vacation request
- POSTDecline or cancel a vacation request
workspace
- GETGet workspace details
- GETDownload a workspace file
- GETList all form templates
- GETGet form template with fields
- GETList all manual position categories
- POSTCreate or update manual position category
- DELETEDelete manual position category
- GETWorkspace object settings (read-only)
- GETList all catalog products
- GETQuick search across workspace entities
- POSTUpload file to workspace
- GETList all workspace users