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

# Update Request

> Changes the fields sent in the body and leaves every other field as it was.

### Permissions

Requires `Intake API` permission, and `Intake access` or `Intake admin` permission. If these permissions are not available to select, contact [support@harvey.ai](mailto:support@harvey.ai).


## OpenAPI

````yaml /intake_api.json patch /api/v1/intake/requests/{request_id}
openapi: 3.0.3
info:
  title: Harvey Intake API
  description: >-
    Push legal requests into Harvey Intake from your own systems and read their
    progress back. Submit a request with an idempotency key, any title and
    description, and the documents it concerns, then read the request to see its
    status, assignee, and attachments as they appear in Harvey.
  version: 1.0.0
  contact:
    email: support@harvey.ai
servers:
  - url: https://api.harvey.ai
    description: Harvey API server
security: []
paths:
  /api/v1/intake/requests/{request_id}:
    patch:
      tags:
        - Intake
      summary: Update Request
      description: >-
        Changes the fields sent in the body and leaves every other field as it
        was.
      operationId: updateIntakeRequest
      parameters:
        - name: request_id
          in: path
          required: true
          description: >-
            The unique identifier of the intake request, as returned when it was
            submitted.
          schema:
            type: string
            format: uuid
          example: 6b5d8f02-4c1a-4f8e-9a77-2d0c3e5b1a94
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIntakeRequest'
            examples:
              updateIntakeRequest:
                summary: Move the request to review and push its due date
                value:
                  status: READY_FOR_REVIEW
                  due_at: '2027-01-01'
      responses:
        '200':
          description: >-
            The intake request after the update. A body that changes nothing
            also returns `200`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeRequest'
              examples:
                updateIntakeRequest:
                  summary: Example response for an updated request
                  value:
                    request_id: 6b5d8f02-4c1a-4f8e-9a77-2d0c3e5b1a94
                    status: READY_FOR_REVIEW
                    harvey_url: >-
                      https://app.harvey.ai/intake/requests/6b5d8f02-4c1a-4f8e-9a77-2d0c3e5b1a94
                    title: Review the Northwind master services agreement
                    description: >-
                      Counterparty sent back redlines on the termination and
                      liability sections.
                    created_at: '2026-10-09T05:12:59.454218Z'
                    updated_at: '2026-10-12T09:03:27.518840Z'
                    completed_at: null
                    due_at: '2027-01-01'
                    assignee:
                      type: USER
                      name: Dana Whitfield
                    attachments:
                      - file_id: 66fead63-460e-4426-a179-39c70b224a99
                        name: northwind-msa.pdf
        '400':
          description: >-
            Bad Request - The body is missing, is not JSON, or is sent without
            `Content-Type: application/json`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                invalidJson:
                  summary: The body could not be parsed
                  value:
                    error: Invalid or missing JSON in request body
        '401':
          description: >-
            Unauthorized - Invalid or missing API token, or a token that may not
            update intake requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                missingPermission:
                  summary: The token lacks permission to update requests
                  value:
                    error: User does not have permission to update Intake requests
        '404':
          description: >-
            Not Found - No intake request you can edit has this id. Also
            returned for a request in another workspace, a deleted request, a
            request that has moved into a Space, and when the Intake API is not
            enabled for your workspace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                notFound:
                  summary: The request is not reachable
                  value:
                    error: Request not found.
        '422':
          description: >-
            Unprocessable Content - The body is empty, names a field that cannot
            be updated, or sets a field to a value it does not accept. `details`
            names the fields at fault. A null `title` or `status`, and mention
            markup in `description`, are reported only once the rest of the body
            is valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeRequestUpdateValidationError'
              examples:
                validationFailed:
                  summary: An oversized title and an unknown field
                  value:
                    error: Invalid request
                    details:
                      - field: title
                        code: string_too_long
                        message: This field is too long
                      - field: assignee
                        code: extra_forbidden
                        message: This field is invalid
        '429':
          description: >-
            Too Many Requests - Rate limit exceeded. The response carries a
            `Retry-After` header giving the seconds to wait
        '500':
          description: Internal Server Error
        '503':
          description: >-
            Service Unavailable - The request's content is temporarily
            unavailable. The call is safe to retry
      security:
        - bearerAuth: []
components:
  schemas:
    UpdateIntakeRequest:
      type: object
      description: The fields to change on an intake request.
      additionalProperties: false
      minProperties: 1
      properties:
        title:
          type: string
          minLength: 1
          maxLength: 255
          description: >-
            The new title. Surrounding whitespace is removed, and it cannot be
            null or blank.
          example: Review the Northwind master services agreement
        description:
          type: string
          nullable: true
          maxLength: 10000
          description: The new description as plain text. Send `null` to remove it.
        status:
          $ref: '#/components/schemas/IntakeRequestStatus'
        due_at:
          type: string
          format: date
          nullable: true
          description: The new due date as `YYYY-MM-DD`. Send `null` to remove it.
          example: '2027-01-01'
    IntakeRequest:
      type: object
      properties:
        request_id:
          type: string
          format: uuid
          description: The unique identifier of the intake request.
        status:
          $ref: '#/components/schemas/IntakeRequestStatus'
        harvey_url:
          type: string
          description: Deep link to the request in Harvey.
        title:
          type: string
          nullable: true
          description: The request's title.
        description:
          type: string
          nullable: true
          description: The request's description.
        created_at:
          type: string
          format: date-time
          description: When the request was submitted.
        updated_at:
          type: string
          format: date-time
          description: When the request last changed.
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: When the request reached `DONE`.
        due_at:
          type: string
          format: date
          nullable: true
          description: The date the request is due.
        assignee:
          description: Who is working the request.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/IntakeRequestAssignee'
        attachments:
          type: array
          description: Files submitted with the request.
          items:
            $ref: '#/components/schemas/IntakeRequestAttachment'
    Error:
      type: object
      properties:
        error:
          type: string
          description: A readable explanation of the failure. Localized, and may change.
    IntakeRequestUpdateValidationError:
      type: object
      description: >-
        Returned when `PATCH /api/v1/intake/requests/{request_id}` rejects a
        request on its body.
      properties:
        error:
          type: string
          description: >-
            A readable summary of the failure. Localized, so switch on
            `details[].code` rather than matching this text.
        details:
          type: array
          description: >-
            It lists each field at fault, one entry per problem. It is empty
            when the body sends no fields.
          items:
            type: object
            properties:
              field:
                type: string
                description: The body field that has the problem.
                example: title
              code:
                type: string
                description: >-
                  The machine-parseable reason the field was rejected, such as
                  `extra_forbidden`, `none_forbidden`, `string_too_long`, or
                  `mention_markup`. Switch on this value rather than parsing
                  `message`, which is localized and may change.
              message:
                type: string
                description: A readable explanation of the problem with this field.
    IntakeRequestStatus:
      type: string
      description: Lifecycle state of an intake request.
      enum:
        - TODO
        - IN_PROGRESS
        - READY_FOR_REVIEW
        - DONE
        - CANCELLED
    IntakeRequestAssignee:
      type: object
      description: Who is working the request inside Harvey.
      properties:
        type:
          $ref: '#/components/schemas/IntakeRequestAssigneeType'
        name:
          type: string
          nullable: true
          description: The assignee's display name.
    IntakeRequestAttachment:
      type: object
      description: One file submitted with the request.
      properties:
        file_id:
          type: string
          format: uuid
          description: The unique identifier of the file.
        name:
          type: string
          nullable: true
          description: The file's name.
    IntakeRequestAssigneeType:
      type: string
      description: >-
        Whether the request is being worked by a person or by Harvey's routing
        agent.
      enum:
        - USER
        - AGENT
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Token

````

## Related topics

- [Rate Limits](https://developers.harvey.ai/api-reference/ratelimits.md)
- [Update Project Users](https://developers.harvey.ai/api-reference/vault/update-project-users.md)
- [Client Matters](https://developers.harvey.ai/guides/client_matters.md)


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