> ## 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.

# Create Request

> Submits a request into your workspace's Intake queue and returns its identifier. [Read the intake request](/api-reference/intake/get-request) for its progress.

### Permissions

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


## OpenAPI

````yaml /intake_api.json post /api/v1/intake/requests
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:
    post:
      tags:
        - Intake
      summary: Create Request
      description: >-
        Submits a request into your workspace's Intake queue and returns its
        identifier. [Read the intake request](/api-reference/intake/get-request)
        for its progress.
      operationId: createIntakeRequest
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - idempotency_key
                - title
              properties:
                idempotency_key:
                  type: string
                  minLength: 1
                  description: >-
                    An identifier you choose for this request, unique within
                    your workspace. A retry carrying a key Harvey has already
                    accepted returns the original request with `200` instead of
                    creating a second one. Must not be blank or whitespace only.
                  example: ticket-48213
                title:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: >-
                    Short summary of what is being asked for. Surrounding
                    whitespace is stripped, and the result must not be empty.
                  example: Review the Northwind master services agreement
                description:
                  type: string
                  maxLength: 10000
                  description: The full request, in as much detail as the reviewer needs.
                  example: >-
                    Counterparty sent back redlines on the termination and
                    liability sections. Please review against our standard
                    positions and flag anything that needs partner sign-off.
                files:
                  type: array
                  description: >-
                    A document the request concerns. Repeat the field once per
                    document. Up to 50 files, and up to 100 MB per file for most
                    types. A file whose type or size is not accepted refuses the
                    entire request, so a request never silently loses a
                    document.
                  items:
                    type: string
                    format: binary
      responses:
        '200':
          description: >-
            A request with this `idempotency_key` was already accepted. The body
            names the original request, and nothing new was created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeRequestCreated'
              examples:
                replayedIntakeRequest:
                  summary: Example response for a replayed idempotency key
                  value:
                    request_id: 6b5d8f02-4c1a-4f8e-9a77-2d0c3e5b1a94
                    status: RECEIVED
                    harvey_url: >-
                      https://app.harvey.ai/intake/requests/6b5d8f02-4c1a-4f8e-9a77-2d0c3e5b1a94
        '201':
          description: Request submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeRequestCreated'
              examples:
                createIntakeRequest:
                  summary: Example response for a newly submitted request
                  value:
                    request_id: 6b5d8f02-4c1a-4f8e-9a77-2d0c3e5b1a94
                    status: RECEIVED
                    harvey_url: >-
                      https://app.harvey.ai/intake/requests/6b5d8f02-4c1a-4f8e-9a77-2d0c3e5b1a94
        '400':
          description: >-
            Bad Request - A document's type or size is not accepted, or more
            than 50 files were sent. No request is created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                fileRejected:
                  summary: A document exceeds the size limit
                  value:
                    error: >-
                      Upload failed. File northwind-msa.pdf exceeds maximum size
                      of 100MB.
                tooManyFiles:
                  summary: More files than a request can carry
                  value:
                    error: Too many files. Maximum 50 allowed, received 64
        '401':
          description: >-
            Unauthorized - Invalid or missing API token, or a token that may not
            create intake requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                missingPermission:
                  summary: The token lacks permission to create requests
                  value:
                    error: User does not have permission to create Intake requests
        '403':
          description: >-
            Forbidden - Intake refused the request while routing it, because
            your token's service user is not a member of your workspace's Intake
            space
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                forbidden:
                  summary: The service user is not a member of the Intake space
                  value:
                    error: User does not have permission to create Intake requests
        '404':
          description: >-
            Not Found - Intake is not configured for your workspace, or the
            Intake API is not enabled for it
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                notConfigured:
                  summary: Intake has no destination configured
                  value:
                    error: Intake is not configured for this workspace.
        '409':
          description: >-
            Conflict - An earlier submission under this `idempotency_key` is in
            a state Harvey cannot return. Retrying the same key will not resolve
            it; submit under a new key, and contact support@harvey.ai if it
            recurs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                conflict:
                  summary: The earlier submission cannot be returned
                  value:
                    error: The original request is no longer available.
        '422':
          description: >-
            Unprocessable Content - A form field is missing, empty, or too long.
            `details` names every field at fault
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeRequestValidationError'
              examples:
                validationFailed:
                  summary: A missing title and an oversized description
                  value:
                    error: Invalid request
                    details:
                      - field: title
                        code: missing
                        message: This field is required
                      - field: description
                        code: string_too_long
                        message: This field is too long
        '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 - The request could not be submitted. Safe to
            retry under the same `idempotency_key`
      security:
        - bearerAuth: []
components:
  schemas:
    IntakeRequestCreated:
      type: object
      description: >-
        Returned when a request is submitted, and when a retry replays an
        idempotency key Harvey already accepted.
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            The unique identifier of the intake request. Store it to read the
            request later.
        status:
          type: string
          description: >-
            The request's status. Always `RECEIVED` on submission, confirming
            Harvey has taken the request. Read the request to see the lifecycle
            status it is working through.
          enum:
            - RECEIVED
        harvey_url:
          type: string
          description: Deep link to the request in Harvey, for handing it to a person.
    Error:
      type: object
      properties:
        error:
          type: string
          description: A readable explanation of the failure. Localized, and may change.
    IntakeRequestValidationError:
      type: object
      description: >-
        Returned when `POST /api/v1/intake/requests` rejects a request on its
        form fields.
      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: Every field at fault, one entry per problem.
          items:
            type: object
            properties:
              field:
                type: string
                description: The form field the problem is on.
                example: title
              code:
                type: string
                description: >-
                  Machine-parseable reason the field was rejected. Switch on
                  this value rather than parsing `message`, which is localized
                  and may change.
                enum:
                  - missing
                  - string_too_short
                  - string_too_long
                  - value_error
              message:
                type: string
                description: A readable explanation of the problem with this field.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Token

````

## Related topics

- [Rate Limits](https://developers.harvey.ai/api-reference/ratelimits.md)
- [Create Agent Thread](https://developers.harvey.ai/api-reference/agents/create-agent-thread.md)
- [Create a new Vault project](https://developers.harvey.ai/api-reference/vault/create-a-new-vault-project.md)


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