---
updatedAt: 2026-05-27T07:27:25.000Z
agentTools:
  projectIndex: https://capmoapi.readme.io/llms.txt
---

# /api/v1/projects/{projectId}/tickets/{ticketId}/attachments

This can be used to list all project ticket attachments in a paginated response.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "paths": {
    "/api/v1/projects/{projectId}/tickets/{ticketId}/attachments": {
      "get": {
        "description": "This can be used to list all project ticket attachments in a paginated response.",
        "operationId": "getProjectTicketAttachments",
        "parameters": [
          {
            "name": "projectId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ticketId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order_by",
            "required": false,
            "in": "query",
            "description": "Field to order by. It can be any field of the entity.",
            "schema": {
              "default": "server_created_at",
              "example": "created_at",
              "type": "string"
            }
          },
          {
            "name": "order_direction",
            "required": false,
            "in": "query",
            "description": "Order direction of the `order_by` field. It can be `asc` or `desc`.",
            "schema": {
              "default": "asc",
              "example": "asc",
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "after",
            "required": false,
            "in": "query",
            "description": "The last element from the previous page. This is a cursor. It will be returned in the output to be used in the next request. When it is not present, the first page is returned. When it is `null`, there are no more pages.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "How many items should be in the output.",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "default": 200,
              "example": 20,
              "type": "number"
            }
          },
          {
            "name": "Request-Id",
            "in": "header",
            "description": "The HTTP `Request-Id` request header is an optional and unofficial HTTP header, used to trace individual HTTP requests from the client to the server and back again. It allows the client and server to correlate each HTTP request. If not provided by the client, the server should generate a unique request ID and include it in the response.",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The project ticket attachments have been successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PaginatedOutputDto"
                        },
                        {
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/ReadTicketAttachmentDto"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request, Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://capmoapi.readme.io/reference/errors#bad-request"
                    },
                    "message": {
                      "type": "string",
                      "example": "An error occurred"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "code": {
                            "type": "string",
                            "example": "BAD_REQUEST"
                          },
                          "message": {
                            "type": "string",
                            "example": "Bad request"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://capmoapi.readme.io/reference/errors#unauthorized"
                    },
                    "message": {
                      "type": "string",
                      "example": "An error occurred"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "code": {
                            "type": "string",
                            "example": "UNAUTHORIZED"
                          },
                          "message": {
                            "type": "string",
                            "example": "Unauthorized"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://capmoapi.readme.io/reference/errors#forbidden"
                    },
                    "message": {
                      "type": "string",
                      "example": "An error occurred"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "code": {
                            "type": "string",
                            "example": "FORBIDDEN"
                          },
                          "message": {
                            "type": "string",
                            "example": "Forbidden"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Object not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://capmoapi.readme.io/reference/errors#not-found"
                    },
                    "message": {
                      "type": "string",
                      "example": "An error occurred"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "code": {
                            "type": "string",
                            "example": "NOT_FOUND"
                          },
                          "message": {
                            "type": "string",
                            "example": "Object not found"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://capmoapi.readme.io/reference/errors#conflict"
                    },
                    "message": {
                      "type": "string",
                      "example": "An error occurred"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "code": {
                            "type": "string",
                            "example": "CONFLICT"
                          },
                          "message": {
                            "type": "string",
                            "example": "Conflict"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "https://capmoapi.readme.io/reference/errors#internal-server-error"
                    },
                    "message": {
                      "type": "string",
                      "example": "An error occurred"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "code": {
                            "type": "string",
                            "example": "INTERNAL_SERVER_ERROR"
                          },
                          "message": {
                            "type": "string",
                            "example": "Internal server error"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "CapmoAuth": []
          }
        ],
        "summary": "",
        "tags": [
          "Project Ticket Attachments"
        ]
      }
    }
  },
  "info": {
    "title": "Capmo REST API",
    "description": "External REST API Documentation for Capmo\n\n## Changelog\n\n### 2026-10-01 — Pending invitees leave organisation memberships\n\nNotice period: 30 days. Sunset: Sat, 31 Oct 2026 00:00:00 GMT.\n\n`GET`, `PATCH` and `DELETE` `/api/v1/organisation/memberships/{id}` will stop resolving a pending invitee on the sunset date. A pending invitation id returns 404 there.\n\n`GET /api/v1/organisation/memberships` will stop including pending invitees on the same date.\n\nPending invitees move to `/api/v1/organisation/invitations` (list, read, create, role update, revoke).\n\nAccepted memberships on `/api/v1/organisation/memberships` are unchanged.\n\nUntil the sunset date, a response that resolves a pending invitee on `GET`, `PATCH` or `DELETE` `/api/v1/organisation/memberships/{id}` includes:\n\n- `Deprecation: @1790812800` (1 October 2026, RFC 9745)\n- `Sunset: Sat, 31 Oct 2026 00:00:00 GMT` (RFC 8594)",
    "version": "1.0",
    "contact": {}
  },
  "tags": [
    {
      "name": "Project Ticket Attachments",
      "description": ""
    }
  ],
  "servers": [
    {
      "url": "https://api.capmo.de",
      "description": "Production"
    }
  ],
  "components": {
    "securitySchemes": {
      "CapmoAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "For authentication, use the custom prefix followed by a space and then your API key. Example: \"Capmo YOUR_API_KEY\"."
      }
    },
    "schemas": {
      "PaginatedOutputDto": {
        "type": "object",
        "properties": {
          "after": {
            "type": "string",
            "example": null
          },
          "count": {
            "type": "number",
            "example": 1
          },
          "total": {
            "type": "number",
            "example": 1
          }
        },
        "required": [
          "after",
          "count",
          "total"
        ]
      },
      "ReadAttachmentFileDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "example": "image/png",
            "description": "The type of the file.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "example": "file.png",
            "description": "The file name",
            "nullable": true
          },
          "signed_download_url": {
            "type": "string",
            "example": "https://example.com/download/file.png",
            "description": "The file signed URL."
          }
        },
        "required": [
          "type",
          "name",
          "signed_download_url"
        ]
      },
      "ReadTicketAttachmentDto": {
        "type": "object",
        "properties": {
          "source_id": {
            "type": "string",
            "description": "The unique identifier of the source. This is a user-generated string. You can use this to link the person to a resource in an external system.",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "created_by": {
            "type": "string",
            "nullable": true,
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "description": "The unique identifier of the creator of the entity."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "example": "2021-07-01T00:00:00.000Z",
            "description": "The date when the entity was created (on the client)."
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "example": "2021-07-01T00:00:00.000Z",
            "description": "The date when the entity was last updated (on the client)."
          },
          "deleted_at": {
            "type": "string",
            "nullable": true,
            "format": "date-time",
            "example": "2021-07-01T00:00:00.000Z",
            "description": "The date when the entity was deleted (on the client)."
          },
          "server_created_at": {
            "type": "string",
            "format": "date-time",
            "example": "2021-07-01T00:00:00.000Z",
            "description": "The date when the entity was created (on the server)."
          },
          "server_updated_at": {
            "type": "string",
            "format": "date-time",
            "example": "2021-07-01T00:00:00.000Z",
            "description": "The date when the entity was last updated (on the server)."
          },
          "server_deleted_at": {
            "type": "string",
            "nullable": true,
            "format": "date-time",
            "example": "2021-07-01T00:00:00.000Z",
            "description": "The date when the entity was deleted (on the server)."
          },
          "id": {
            "type": "string",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "description": "The unique identifier of the ticket attachment."
          },
          "ticket_id": {
            "type": "string",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "description": "ID of the ticket this attachment belongs to."
          },
          "project_id": {
            "type": "string",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "description": "ID of the project this attachment belongs to."
          },
          "file": {
            "example": {
              "type": "image/png",
              "signed_download_url": "https://example.com/download/file.png"
            },
            "description": "The file attached to the ticket.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ReadAttachmentFileDto"
              }
            ]
          }
        },
        "required": [
          "created_by",
          "created_at",
          "updated_at",
          "deleted_at",
          "server_created_at",
          "server_updated_at",
          "server_deleted_at",
          "id",
          "ticket_id",
          "project_id",
          "file"
        ]
      }
    }
  },
  "x-readme": {
    "headers": [
      {
        "key": "Request-Id",
        "value": "YOUR_REQUEST_ID"
      }
    ]
  }
}
```