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

# List works

> Returns the works your key can see, newest first. Requires the `works:read` scope.



## OpenAPI

````yaml /openapi.yaml get /works
openapi: 3.1.0
info:
  title: BeanRails Public API
  version: 1.0.0
  description: >
    Read and write BeanRails contacts, works, invoices, quotations and invoice
    payments from your own systems.

    Authenticate every request with an API key. See the guides for scopes,
    pagination and error handling.
servers:
  - url: https://{host}/api/public/v1
    description: Public API v1
    variables:
      host:
        default: app.beanrails.com
        description: The host your BeanRails workspace is served from.
security:
  - bearerAuth: []
tags:
  - name: Contacts
    description: Customers and leads.
  - name: Contact addresses
    description: Billing, shipping and service addresses of a contact.
  - name: Works
    description: Service or delivery jobs.
  - name: Work PODs
    description: Proof of delivery records submitted by drivers (read only).
  - name: Invoices
    description: Invoices, including status changes.
  - name: Quotations
    description: Quotations, including status changes.
  - name: Invoice payments
    description: Payments recorded against an invoice.
paths:
  /works:
    get:
      tags:
        - Works
      summary: List works
      description: >-
        Returns the works your key can see, newest first. Requires the
        `works:read` scope.
      operationId: listWorks
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/Search'
        - name: status
          in: query
          description: Filter by work status.
          schema:
            type: string
            enum:
              - new
              - vehicle_assigned
              - in_progress
              - failed
              - cancelled
              - completed
        - name: contact_id
          in: query
          description: Filter by contact ID.
          schema:
            type: integer
        - name: vehicle_id
          in: query
          description: Filter by assigned vehicle ID.
          schema:
            type: integer
        - name: zone_id
          in: query
          description: Filter by zone ID.
          schema:
            type: integer
        - name: from
          in: query
          description: Works on or after this date (`YYYY-MM-DD`, workspace timezone).
          schema:
            type: string
            format: date
        - name: to
          in: query
          description: Works on or before this date (`YYYY-MM-DD`, workspace timezone).
          schema:
            type: string
            format: date
      responses:
        '200':
          description: A page of works.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    Limit:
      name: limit
      in: query
      description: Records per page. Defaults to 10, capped at 100.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
    Page:
      name: page
      in: query
      description: Page number, starting at 1.
      schema:
        type: integer
        minimum: 1
        default: 1
    Search:
      name: search
      in: query
      description: >-
        Free-text search across the record's main fields, such as its number,
        name or email.
      schema:
        type: string
  schemas:
    WorkList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Work'
        links:
          $ref: '#/components/schemas/PaginationLinks'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    Work:
      type: object
      additionalProperties: true
      properties:
        id:
          type: integer
        work_number:
          type: string
        work_date:
          type: string
          description: The work date in the workspace timezone.
        time_window_from:
          type:
            - string
            - 'null'
        time_window_to:
          type:
            - string
            - 'null'
        status:
          type: string
          enum:
            - new
            - vehicle_assigned
            - in_progress
            - failed
            - cancelled
            - completed
        status_name:
          type:
            - string
            - 'null'
        service_type:
          type:
            - string
            - 'null'
          enum:
            - service
            - engineering
            - null
        contact_id:
          type:
            - integer
            - 'null'
        vehicle_id:
          type:
            - integer
            - 'null'
        vehicle_name:
          type:
            - string
            - 'null'
        zone_id:
          type:
            - integer
            - 'null'
        zone_name:
          type:
            - string
            - 'null'
        attention:
          type: string
        email:
          type:
            - string
            - 'null'
        company_name:
          type:
            - string
            - 'null'
        mobile_no:
          type:
            - string
            - 'null'
        office_no:
          type:
            - string
            - 'null'
        address1:
          type: string
        address2:
          type:
            - string
            - 'null'
        city:
          type:
            - string
            - 'null'
        state:
          type:
            - string
            - 'null'
        postcode:
          type:
            - string
            - 'null'
        country:
          type:
            - string
            - 'null'
        instructions:
          type:
            - string
            - 'null'
        work_price:
          type:
            - string
            - 'null'
          description: Free text entered by the user, not a number.
        items:
          type: array
          items:
            $ref: '#/components/schemas/WorkItem'
        created_at:
          type: string
        updated_at:
          type: string
    PaginationLinks:
      type: object
      properties:
        first:
          type:
            - string
            - 'null'
        last:
          type:
            - string
            - 'null'
        prev:
          type:
            - string
            - 'null'
        next:
          type:
            - string
            - 'null'
    PaginationMeta:
      type: object
      properties:
        current_page:
          type: integer
        last_page:
          type: integer
        per_page:
          type: integer
        from:
          type:
            - integer
            - 'null'
        to:
          type:
            - integer
            - 'null'
        total:
          type: integer
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: A stable, machine readable code.
              examples:
                - not_found
            message:
              type: string
              description: A human readable explanation.
    WorkItem:
      type: object
      additionalProperties: true
      properties:
        id:
          type: integer
        name:
          type: string
        sku:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        quantity:
          type:
            - number
            - 'null'
        unit_of_measure:
          type:
            - string
            - 'null'
        unit_price:
          type:
            - number
            - 'null'
  responses:
    Unauthorized:
      description: The API key is missing, invalid, revoked or expired.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: invalid_api_key
              message: The API key is invalid, revoked, or expired.
    Forbidden:
      description: >-
        The key lacks the required scope, the key owner's role no longer allows
        it, or the owner's account is suspended.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: insufficient_scope
              message: This API key does not have the required scope.
    RateLimited:
      description: >-
        You exceeded the key's requests per minute. Wait for the number of
        seconds in the `Retry-After` header.
      headers:
        Retry-After:
          description: Seconds until you can retry.
          schema:
            type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An API key created in BeanRails, for example `brk_live_...`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.