> ## Documentation Index
> Fetch the complete documentation index at: https://docs.infinity.swiss/llms.txt
> Use this file to discover all available pages before exploring further.

# Find projects

> Finds matching projects in the organisation. Returns slim preview objects suitable for listings. Use this to resolve the project id that work entries should be recorded on.

## Finding projects

Returns slim preview objects suitable for listings. Use this endpoint to resolve the id of the project that work should be recorded on.

Results can be narrowed down by client and by status:

* `client` — the contact id of the client the project belongs to
* `status` — `active`, `completed` or `abandoned`. Use `archived` to match both completed and abandoned projects.

To read the work entries of a project, use [Get specific project](/api/projects/get-specific) or [Find work entries](/api/projects/work-entries/find).


## OpenAPI

````yaml GET /v1/projects
openapi: 3.1.0
info:
  title: infinity.swiss Open API
  version: '1.0'
  summary: ''
servers:
  - url: https://api.infinity.swiss
security:
  - apiKey: []
paths:
  /v1/projects:
    get:
      tags: []
      summary: Find projects
      description: >-
        Finds matching projects in the organisation. Returns slim preview
        objects suitable for listings. Use this to resolve the project id that
        work entries should be recorded on.
      operationId: find-projects-v1
      parameters:
        - schema:
            type: number
            default: 30
            maximum: 200
          in: query
          name: limit
          description: Pagination limit. Defaults to 30, maximum 200.
        - schema:
            type: number
          in: query
          name: skip
          description: Pagination offset for the results.
        - schema:
            type: string
          in: query
          name: client
          description: Filters projects belonging to the client with the given contact id.
        - schema:
            type: string
            enum:
              - active
              - completed
              - abandoned
              - archived
          in: query
          name: status
          description: >-
            Filters projects by status. Use `archived` to match both completed
            and abandoned projects.
      responses:
        '200':
          description: Successfully returns the list of projects.
          content:
            application/json:
              schema:
                type: object
                properties:
                  projects:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectPreview'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorised'
components:
  schemas:
    ProjectPreview:
      title: ProjectPreview
      description: A slim representation of a project as returned by list endpoints.
      allOf:
        - $ref: '#/components/schemas/ProjectCommonFields'
    ProjectCommonFields:
      title: ProjectCommonFields
      type: object
      description: Fields shared by the full and the preview representation of a project.
      required:
        - id
        - title
        - client
        - status
        - unbilledValue
        - billedValue
        - totalValue
        - hasUnbilledWork
        - invoiceIds
      properties:
        id:
          type: string
          description: The unique id of this project.
        title:
          type: string
          description: The title of the project.
        client:
          type: string
          description: The contact id of the client this project belongs to.
        status:
          $ref: '#/components/schemas/ProjectStatus'
        currentStage:
          type: string
          description: The id of the project stage this project is currently assigned to.
        unbilledValue:
          type: integer
          description: The sum value of all unbilled work entries in cents.
        billedValue:
          type: integer
          description: The sum value of all invoices created from this project in cents.
        totalValue:
          type: integer
          description: The sum of the billed and unbilled value in cents.
        hasUnbilledWork:
          type: boolean
          description: >-
            Whether this project has any billable work that has not been billed
            yet.
        invoiceIds:
          type: array
          description: The ids of all customer invoices created from this project.
          items:
            type: string
        lastHourlyWorkEntryAddedAt:
          type: string
          format: date
          description: The date of the most recent hourly work entry, if any exist.
    ProjectStatus:
      title: ProjectStatus
      type: string
      description: The status a project can be in.
      enum:
        - active
        - completed
        - abandoned
  responses:
    BadRequest:
      description: >-
        A bad request is thrown if the request payload is malformed or fails
        validation.
      content:
        application/json:
          schema:
            type: object
            required:
              - code
            properties:
              code:
                type: string
                description: |-
                  The specific error code for this request. May be:
                  - `general/missing-fields`
                  - `general/malformed-request`
                  - `general/invalid-date`
                  - `general/input-too-long`
                  - `general/zero-or-negative-amount-not-allowed`
              invalidFields:
                type: array
                description: A list of the fields which were invalid, if applicable.
                items:
                  type: string
    Unauthorised:
      description: >-
        An unauthorised request was submitted. You may be using an incorrect or
        expired API token, or are attempting to access a document outside of the
        scope of the token.
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: string
                x-stoplight:
                  id: 08hkw8ukmi2lp
                description: Specific error code
          examples:
            Unauthorised request:
              value:
                code: general/unauthorised
  securitySchemes:
    apiKey:
      name: x-api-token
      type: apiKey
      in: header
      description: >-
        API token for authentication. Obtain from your Infinity account
        settings.

````