openapi: 3.1.0 info: title: Shortcut REST API v3 description: >- RESTful API providing CRUD access to Shortcut project management resources including stories, epics, iterations, workflows, projects, teams, members, files, labels, categories, documents, custom fields, entity templates, and webhooks. Authenticates with a Shortcut-Token header containing an API token generated in app.shortcut.com settings. Rate-limited to 200 requests per minute; excess requests return HTTP 429. version: v3 contact: name: Shortcut Developer Support url: https://developer.shortcut.com/api/rest/v3 servers: - url: https://api.app.shortcut.com/api/v3 description: Shortcut REST API v3 security: - ShortcutToken: [] paths: /categories: get: summary: List Categories operationId: listCategories tags: [Categories] responses: '200': description: OK post: summary: Create Category operationId: createCategory tags: [Categories] responses: '201': description: Created /categories/{category-public-id}: parameters: - $ref: '#/components/parameters/CategoryPublicId' get: summary: Get Category operationId: getCategory tags: [Categories] responses: '200': description: OK put: summary: Update Category operationId: updateCategory tags: [Categories] responses: '200': description: OK delete: summary: Delete Category operationId: deleteCategory tags: [Categories] responses: '204': description: No Content /custom-fields: get: summary: List Custom Fields operationId: listCustomFields tags: [Custom Fields] responses: '200': description: OK /custom-fields/{custom-field-public-id}: parameters: - $ref: '#/components/parameters/CustomFieldPublicId' get: summary: Get Custom Field operationId: getCustomField tags: [Custom Fields] responses: '200': description: OK put: summary: Update Custom Field operationId: updateCustomField tags: [Custom Fields] responses: '200': description: OK delete: summary: Delete Custom Field operationId: deleteCustomField tags: [Custom Fields] responses: '204': description: No Content /documents: get: summary: List Documents operationId: listDocuments tags: [Documents] responses: '200': description: OK post: summary: Create Document operationId: createDocument tags: [Documents] responses: '201': description: Created /documents/{document-public-id}: parameters: - $ref: '#/components/parameters/DocumentPublicId' get: summary: Get Document operationId: getDocument tags: [Documents] responses: '200': description: OK put: summary: Update Document operationId: updateDocument tags: [Documents] responses: '200': description: OK delete: summary: Delete Document operationId: deleteDocument tags: [Documents] responses: '204': description: No Content /epics: get: summary: List Epics operationId: listEpics tags: [Epics] responses: '200': description: OK post: summary: Create Epic operationId: createEpic tags: [Epics] responses: '201': description: Created /epics/{epic-public-id}: parameters: - $ref: '#/components/parameters/EpicPublicId' get: summary: Get Epic operationId: getEpic tags: [Epics] responses: '200': description: OK put: summary: Update Epic operationId: updateEpic tags: [Epics] responses: '200': description: OK delete: summary: Delete Epic operationId: deleteEpic tags: [Epics] responses: '204': description: No Content /epics/{epic-public-id}/comments: parameters: - $ref: '#/components/parameters/EpicPublicId' get: summary: List Epic Comments operationId: listEpicComments tags: [Epics] responses: '200': description: OK post: summary: Create Epic Comment operationId: createEpicComment tags: [Epics] responses: '201': description: Created /epics/{epic-public-id}/health: parameters: - $ref: '#/components/parameters/EpicPublicId' get: summary: Get Epic Health operationId: getEpicHealth tags: [Epics] responses: '200': description: OK /entity-templates: get: summary: List Entity Templates operationId: listEntityTemplates tags: [Entity Templates] responses: '200': description: OK post: summary: Create Entity Template operationId: createEntityTemplate tags: [Entity Templates] responses: '201': description: Created /entity-templates/{entity-template-public-id}: parameters: - $ref: '#/components/parameters/EntityTemplatePublicId' get: summary: Get Entity Template operationId: getEntityTemplate tags: [Entity Templates] responses: '200': description: OK put: summary: Update Entity Template operationId: updateEntityTemplate tags: [Entity Templates] responses: '200': description: OK delete: summary: Delete Entity Template operationId: deleteEntityTemplate tags: [Entity Templates] responses: '204': description: No Content /epic-workflow: get: summary: Get Epic Workflow operationId: getEpicWorkflow tags: [Workflows] responses: '200': description: OK components: securitySchemes: ShortcutToken: type: apiKey in: header name: Shortcut-Token description: Personal API token generated at app.shortcut.com settings. parameters: CategoryPublicId: name: category-public-id in: path required: true schema: type: integer CustomFieldPublicId: name: custom-field-public-id in: path required: true schema: type: string DocumentPublicId: name: document-public-id in: path required: true schema: type: string EpicPublicId: name: epic-public-id in: path required: true schema: type: integer EntityTemplatePublicId: name: entity-template-public-id in: path required: true schema: type: string