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

# Email the shortlist to the client

> Email the project's shortlist to a client workspace, as preview_shortlist_email showed it. It reaches the client, so it runs only from a proposal: preview_action, show the person who gets what, then apply_proposal once they agree. Calling this route directly is refused with proposal_required, and nothing is sent. confirm_workspace_name is the client workspace's name as the person saw it in preview_shortlist_email; a different name is refused with workspace_name_mismatch, so one client never gets another's list. Send expected_total (preview_shortlist_email's total) and a shortlist that has moved since is refused with shortlist_changed. In testing, as in the app: developer keys only, and it goes to Revcenter's test inbox, never the client's members. Applying the same proposal twice sends once. Does not use credits. It reaches the client, so the MCP server asks the person first, showing who gets what.

Needs scope `shortlists:write`.



## OpenAPI

````yaml /openapi.json post /projects/{projectId}/shortlist/email/send
openapi: 3.1.0
info:
  title: Revcenter API
  version: v1
  description: >-
    Projects, searches, scored candidates and shortlists. Generated from the
    agent API's registry.
servers:
  - url: https://api.revcenter.ai/v1
security:
  - bearer: []
tags:
  - name: Login
  - name: Account
  - name: Actions
  - name: Reference
  - name: Projects
  - name: Searches
  - name: Scoring
  - name: Shortlists
  - name: Candidates
  - name: Webhooks
  - name: Health
paths:
  /projects/{projectId}/shortlist/email/send:
    post:
      tags:
        - Shortlists
      summary: Email the shortlist to the client
      description: >-
        Email the project's shortlist to a client workspace, as
        preview_shortlist_email showed it. It reaches the client, so it runs
        only from a proposal: preview_action, show the person who gets what,
        then apply_proposal once they agree. Calling this route directly is
        refused with proposal_required, and nothing is sent.
        confirm_workspace_name is the client workspace's name as the person saw
        it in preview_shortlist_email; a different name is refused with
        workspace_name_mismatch, so one client never gets another's list. Send
        expected_total (preview_shortlist_email's total) and a shortlist that
        has moved since is refused with shortlist_changed. In testing, as in the
        app: developer keys only, and it goes to Revcenter's test inbox, never
        the client's members. Applying the same proposal twice sends once. Does
        not use credits. It reaches the client, so the MCP server asks the
        person first, showing who gets what.


        Needs scope `shortlists:write`.
      operationId: send_shortlist_email
      parameters:
        - name: projectId
          in: path
          required: true
          description: A project id
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - confirm_workspace_name
              properties:
                client_workspace_id:
                  type: string
                  description: >-
                    The client workspace to email; defaults to the client portal
                    the project is assigned to.
                confirm_workspace_name:
                  type: string
                  description: >-
                    The client workspace's name, as preview_shortlist_email
                    showed it.
                expected_total:
                  type: integer
                  minimum: 0
                  description: >-
                    preview_shortlist_email's total; refused if the shortlist
                    holds a different number now.
            example:
              client_workspace_id: org_2xClIeNt
              confirm_workspace_name: Garden State Foods
              expected_total: 14
      responses:
        '201':
          description: Created
          headers:
            X-RateLimit-Limit:
              description: >-
                Requests allowed this minute (the tighter of the key's and the
                workspace's).
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left this minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute resets, in Unix seconds.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      project_id:
                        type: string
                      client_workspace:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                      mode:
                        type: string
                        enum:
                          - test
                      sent_to:
                        type: array
                        items:
                          type: string
                      intended_recipients:
                        type: array
                        items:
                          type: string
                      url:
                        type: string
                      total:
                        type: integer
                  meta:
                    $ref: '#/components/schemas/Meta'
              example:
                data:
                  project_id: 6f1c2a0e-3b7d-4c1e-9a52-0d4e8b7c1a11
                  client_workspace:
                    id: org_2xClIeNt
                    name: Garden State Foods
                  mode: test
                  sent_to:
                    - test-inbox@revcenter.ai
                  intended_recipients:
                    - hiring@gardenstatefoods.example
                  url: https://app.revcenter.ai/share/rvs_3f9a1c7e2b
                  total: 14
                meta:
                  request_id: req_01JABCDEF
        '400':
          $ref: '#/components/responses/Error'
        '401':
          $ref: '#/components/responses/Error'
        '402':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '409':
          $ref: '#/components/responses/Error'
        '429':
          $ref: '#/components/responses/Error'
        '500':
          $ref: '#/components/responses/Error'
        '503':
          $ref: '#/components/responses/Error'
components:
  schemas:
    Meta:
      type: object
      properties:
        request_id:
          type: string
        total:
          type: integer
          description: On lists that count everything that matched.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
              description: 'Stable: every code is on the Errors page.'
            message:
              type: string
            details:
              type:
                - object
                - 'null'
              description: >-
                Structured specifics, when there are any (for example
                retry_after_seconds).
            request_id:
              type: string
        meta:
          $ref: '#/components/schemas/Meta'
      example:
        error:
          code: search_not_found
          message: No search with that id in this workspace.
          details: null
          request_id: req_01JABCDEF
        meta:
          request_id: req_01JABCDEF
  responses:
    Error:
      description: 'An error: one envelope everywhere. A 429 carries Retry-After.'
      headers:
        X-RateLimit-Limit:
          description: >-
            Requests allowed this minute (the tighter of the key's and the
            workspace's).
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: Requests left this minute.
          schema:
            type: integer
        X-RateLimit-Reset:
          description: When the minute resets, in Unix seconds.
          schema:
            type: integer
        Retry-After:
          description: Seconds to wait (on 429 and 503).
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: An API key from Settings → Usage → API (rvc_live_…).

````

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