> ## Documentation index
> Fetch the complete documentation index at: https://docs.rxresu.me/llms.txt
> Ask it with GET https://docs.rxresu.me/ask?q=<keywords or question>. Short keywords rank best.
> Use these to discover all available pages before exploring further.

# List cover letters

> Returns the authenticated user's saved cover letters, optionally filtered by search, resume, or application.

`GET /cover-letters`

## OpenAPI

````yaml spec.json get /cover-letters
openapi: 3.1.1
info:
  title: Reactive Resume
  version: 6.0.7
  description: "Reactive Resume API. Mutations do not support Idempotency-Key. Do
    not automatically retry POST, PUT, PATCH or DELETE requests after a timeout:
    first read the resource to determine whether the operation succeeded.
    Existing enum values and response shapes are retained for compatibility."
  license:
    name: MIT
    url: https://github.com/reactive-resume/reactive-resume/blob/main/LICENSE
  contact:
    name: Amruth Pillai
    email: amruth@rxresu.me
    url: https://amruthpillai.com
servers:
  - url: https://rxresu.me/api/openapi
security:
  - apiKey: []
  - bearerAuth: []
  - cookieAuth: []
paths:
  /cover-letters:
    get:
      operationId: listCoverLetters
      summary: List cover letters
      description: Returns the authenticated user's saved cover letters, optionally
        filtered by search, resume, or application.
      tags:
        - Cover Letters
      parameters:
        - name: search
          in: query
          schema:
            type: string
            maxLength: 100
          allowEmptyValue: true
          allowReserved: true
        - name: resumeId
          in: query
          schema:
            type: string
            minLength: 1
          allowEmptyValue: true
          allowReserved: true
        - name: applicationId
          in: query
          schema:
            type: string
            minLength: 1
          allowEmptyValue: true
          allowReserved: true
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
          allowEmptyValue: true
          allowReserved: true
        - name: offset
          in: query
          schema:
            type: integer
            minimum: 0
            maximum: 9007199254740991
            default: 0
          allowEmptyValue: true
          allowReserved: true
      responses:
        "200":
          description: A paginated list of cover letters.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          minLength: 1
                          maxLength: 100
                        recipient:
                          type: string
                          maxLength: 20000
                        content:
                          type: string
                          maxLength: 100000
                        greeting:
                          anyOf:
                            - type: string
                              maxLength: 2000
                            - type: "null"
                          default: null
                          description: Custom greeting; null uses the document language default, empty
                            omits it.
                        signOff:
                          anyOf:
                            - type: string
                              maxLength: 2000
                            - type: "null"
                          default: null
                          description: Custom signature including name and optional contact details; null
                            uses the document language default with the sender's
                            name, empty omits it.
                        style:
                          type: object
                          properties:
                            basics:
                              type: object
                              properties:
                                name:
                                  type: string
                                  description: The full name of the author of the resume.
                                headline:
                                  type: string
                                  description: The headline of the author of the resume.
                                email:
                                  type: string
                                  description: The email address of the author of the resume.
                                phone:
                                  type: string
                                  description: The phone number of the author of the resume.
                                location:
                                  type: string
                                  description: The location of the author of the resume.
                                website:
                                  type: object
                                  properties:
                                    url:
                                      type: string
                                      description: The URL to show as a link. Must be a valid URL with a protocol
                                        (http:// or https://).
                                    label:
                                      type: string
                                      description: The label to display for the URL. Leave blank to display the URL
                                        as-is.
                                  required:
                                    - url
                                    - label
                                  description: The website of the author of the resume.
                                customFields:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                        description: The unique identifier for the custom field. Usually generated as a
                                          UUID.
                                      icon:
                                        type: string
                                        description: The icon to display for the custom field. Must be a valid icon name
                                          from @phosphor-icons/web icon set, or
                                          an empty string to hide. Default to ''
                                          (empty string) when unsure which icons
                                          are available.
                                      text:
                                        type: string
                                        description: The text to display for the custom field.
                                      link:
                                        type: string
                                        description: If the custom field should be a link, the URL to link to.
                                    required:
                                      - id
                                      - icon
                                      - text
                                      - link
                                  description: The custom fields to display on the resume.
                              required:
                                - name
                                - headline
                                - email
                                - phone
                                - location
                                - website
                                - customFields
                            picture:
                              type: object
                              properties:
                                hidden:
                                  type: boolean
                                  description: Whether to hide the picture from the resume.
                                fit:
                                  enum:
                                    - cover
                                    - contain
                                  type: string
                                  description: "How the picture fits its frame: cover crops overflow, while
                                    contain preserves the whole image."
                                url:
                                  type: string
                                  description: The URL to the picture to display on the resume. Prefer local
                                    app-served paths (for example /uploads/...)
                                    populated via upload.
                                size:
                                  type: number
                                  minimum: 32
                                  maximum: 512
                                  description: The size of the picture to display on the resume, defined in points
                                    (pt).
                                rotation:
                                  type: number
                                  minimum: 0
                                  maximum: 360
                                  description: The rotation of the picture to display on the resume, defined in
                                    degrees (°).
                                aspectRatio:
                                  type: number
                                  minimum: 0.5
                                  maximum: 2.5
                                  description: The aspect ratio of the picture to display on the resume, defined
                                    as width / height (e.g. 1.5 for 1.5:1 or 0.5
                                    for 1:2).
                                borderRadius:
                                  type: number
                                  minimum: 0
                                  maximum: 100
                                  description: The border radius of the picture to display on the resume, defined
                                    in points (pt).
                                borderColor:
                                  type: string
                                  description: The color of the border of the picture to display on the resume,
                                    defined as rgba(r, g, b, a).
                                borderWidth:
                                  type: number
                                  minimum: 0
                                  description: The width of the border of the picture to display on the resume,
                                    defined in points (pt).
                                shadowColor:
                                  type: string
                                  description: The color of the shadow of the picture to display on the resume,
                                    defined as rgba(r, g, b, a).
                                shadowWidth:
                                  type: number
                                  minimum: 0
                                  description: The width of the shadow of the picture to display on the resume,
                                    defined in points (pt).
                              required:
                                - hidden
                                - fit
                                - url
                                - size
                                - rotation
                                - aspectRatio
                                - borderRadius
                                - borderColor
                                - borderWidth
                                - shadowColor
                                - shadowWidth
                            metadata:
                              type: object
                              properties:
                                template:
                                  enum:
                                    - azurill
                                    - bronzor
                                    - chikorita
                                    - ditgar
                                    - ditto
                                    - gengar
                                    - glalie
                                    - kakuna
                                    - lapras
                                    - leafish
                                    - meowth
                                    - onyx
                                    - persian
                                    - pikachu
                                    - porygon
                                    - rhyhorn
                                    - scizor
                                    - smeargle
                                  type: string
                                  description: The template to use for the resume. Determines the overall design
                                    and appearance of the resume.
                                page:
                                  type: object
                                  properties:
                                    gapX:
                                      type: number
                                      minimum: 0
                                      description: The horizontal gap between the sections of the page, defined in
                                        points (pt).
                                    gapY:
                                      type: number
                                      minimum: 0
                                      description: The vertical gap between the sections of the page, defined in
                                        points (pt).
                                    marginX:
                                      type: number
                                      minimum: 0
                                      maximum: 100
                                      description: The horizontal margin of the page, defined in points (pt).
                                    marginY:
                                      type: number
                                      minimum: 0
                                      maximum: 100
                                      description: The vertical margin of the page, defined in points (pt).
                                    format:
                                      enum:
                                        - a4
                                        - letter
                                        - free-form
                                      type: string
                                      description: The format of the page. Can be 'a4', 'letter', or 'free-form'.
                                    locale:
                                      type: string
                                      description: The locale of the page. Used for displaying pre-translated section
                                        headings, if not overridden.
                                    dateFormat:
                                      enum:
                                        - short
                                        - long
                                        - numeric
                                        - iso
                                      type: string
                                      description: "How dates print: 'short' (Mar 2022), 'long' (March 2022),
                                        'numeric' (03/2022) or 'iso' (2022-03).
                                        When missing, it's read from how the
                                        dates were typed."
                                    hideLinkUnderline:
                                      type: boolean
                                      description: Whether to hide the underlines of the links.
                                    hideIcons:
                                      type: boolean
                                      description: Whether to hide the item-level icons (skills, profiles, interests).
                                    hideSectionIcons:
                                      type: boolean
                                      description: Whether to hide the section heading icons displayed before section
                                        titles.
                                  required:
                                    - gapX
                                    - gapY
                                    - marginX
                                    - marginY
                                    - format
                                    - locale
                                    - hideLinkUnderline
                                    - hideIcons
                                    - hideSectionIcons
                                  description: The page settings of the resume. Determines the margins, format,
                                    and locale of the resume.
                                design:
                                  type: object
                                  properties:
                                    level:
                                      type: object
                                      properties:
                                        icon:
                                          type: string
                                          description: The icon to display for the custom field. Must be a valid icon name
                                            from @phosphor-icons/web icon set,
                                            or an empty string to hide. Default
                                            to '' (empty string) when unsure
                                            which icons are available.
                                        type:
                                          enum:
                                            - hidden
                                            - circle
                                            - square
                                            - rectangle
                                            - rectangle-full
                                            - progress-bar
                                            - icon
                                          type: string
                                          description: The type of the level design. 'hidden' will hide the level design,
                                            'circle' will display a circle,
                                            'square' will display a square,
                                            'rectangle' will display a
                                            rectangle, 'rectangle-full' will
                                            display a full rectangle,
                                            'progress-bar' will display a
                                            progress bar, and 'icon' will
                                            display an icon. If 'icon' is
                                            selected, the icon to display should
                                            be specified in the 'icon' field.
                                      required:
                                        - icon
                                        - type
                                    colors:
                                      type: object
                                      properties:
                                        primary:
                                          type: string
                                          description: The primary color of the design, defined as rgba(r, g, b, a).
                                        text:
                                          type: string
                                          description: "The text color of the design, defined as rgba(r, g, b, a). Usually
                                            set to black: rgba(0, 0, 0, 1)."
                                        background:
                                          type: string
                                          description: "The background color of the design, defined as rgba(r, g, b, a).
                                            Usually set to white: rgba(255, 255,
                                            255, 1)."
                                      required:
                                        - primary
                                        - text
                                        - background
                                    entry:
                                      type: object
                                      properties:
                                        layout:
                                          enum:
                                            - stacked
                                            - inline
                                            - compact
                                            - date-column
                                            - eyebrow
                                          type: string
                                          description: How the header of each Experience, Education and Volunteer entry is
                                            arranged. 'stacked' is two rows
                                            (name and location, then role and
                                            date), 'inline' puts everything on
                                            one row, 'compact' puts the lead and
                                            the date on top with the rest
                                            grouped below, 'date-column' sets
                                            dates in a column on the left, and
                                            'eyebrow' puts a small line above a
                                            larger lead. Dates also move to the
                                            left column for Projects, Awards,
                                            Certifications and Publications with
                                            'date-column'.
                                        lead:
                                          enum:
                                            - organization
                                            - role
                                          type: string
                                          description: "Which comes first in Experience and Education entries: the
                                            organization (company, school) or
                                            the role (position, field of
                                            study)."
                                        accent:
                                          enum:
                                            - none
                                            - rule
                                            - bar
                                            - band
                                          type: string
                                          description: "Decoration in the accent color around each entry header: 'none',
                                            'rule' (a line under it), 'bar' (a
                                            bar beside it) or 'band' (a tinted
                                            background)."
                                      required:
                                        - layout
                                        - lead
                                        - accent
                                      description: How entry headers are arranged and decorated. When missing, entries
                                        use the stacked layout.
                                  required:
                                    - level
                                    - colors
                                  description: The design settings of the resume. Determines the colors, level
                                    designs, and typography of the resume.
                                typography:
                                  type: object
                                  properties:
                                    body:
                                      type: object
                                      properties:
                                        fontFamily:
                                          type: string
                                          description: The family of the font to use. Must be a supported resume font.
                                        fontWeights:
                                          type: array
                                          items:
                                            enum:
                                              - "100"
                                              - "200"
                                              - "300"
                                              - "400"
                                              - "500"
                                              - "600"
                                              - "700"
                                              - "800"
                                              - "900"
                                            type: string
                                          description: The weight of the font, defined as a number between 100 and 900.
                                            Default to 400 when unsure if the
                                            weight is available in the font.
                                        fontSize:
                                          type: number
                                          minimum: 6
                                          maximum: 24
                                          description: The size of the font to use, defined in points (pt).
                                        lineHeight:
                                          type: number
                                          minimum: 0.5
                                          maximum: 4
                                          description: The line height of the font to use, defined as a multiplier of the
                                            font size (e.g. 1.5 for 1.5x).
                                      required:
                                        - fontFamily
                                        - fontWeights
                                        - fontSize
                                        - lineHeight
                                      description: The typography for the body of the resume.
                                    heading:
                                      type: object
                                      properties:
                                        fontFamily:
                                          type: string
                                          description: The family of the font to use. Must be a supported resume font.
                                        fontWeights:
                                          type: array
                                          items:
                                            enum:
                                              - "100"
                                              - "200"
                                              - "300"
                                              - "400"
                                              - "500"
                                              - "600"
                                              - "700"
                                              - "800"
                                              - "900"
                                            type: string
                                          description: The weight of the font, defined as a number between 100 and 900.
                                            Default to 400 when unsure if the
                                            weight is available in the font.
                                        fontSize:
                                          type: number
                                          minimum: 6
                                          maximum: 24
                                          description: The size of the font to use, defined in points (pt).
                                        lineHeight:
                                          type: number
                                          minimum: 0.5
                                          maximum: 4
                                          description: The line height of the font to use, defined as a multiplier of the
                                            font size (e.g. 1.5 for 1.5x).
                                      required:
                                        - fontFamily
                                        - fontWeights
                                        - fontSize
                                        - lineHeight
                                      description: The typography for the headings of the resume.
                                    hyphenation:
                                      type: boolean
                                      description: Enable automatic PDF hyphenation using the resume language.
                                        Defaults to false.
                                  required:
                                    - body
                                    - heading
                                  description: The typography settings of the resume. Determines the fonts and
                                    sizes of the body and headings of the
                                    resume.
                                styleRules:
                                  description: Structured style rules that target semantic resume sections and
                                    slots for PDF rendering.
                                stylesheet:
                                  type: object
                                  properties:
                                    mode:
                                      enum:
                                        - legacy
                                        - semantic
                                      type: string
                                    source:
                                      type: object
                                      properties:
                                        languageVersion:
                                          type: integer
                                          minimum: -9007199254740991
                                          maximum: 9007199254740991
                                          exclusiveMinimum: 0
                                        text:
                                          type: string
                                      required:
                                        - languageVersion
                                        - text
                                      additionalProperties: false
                                  required:
                                    - mode
                                    - source
                                  additionalProperties: false
                                web:
                                  type: object
                                  properties:
                                    showCredit:
                                      type: boolean
                                      description: Whether the web page shows the small 'Made with Reactive Resume'
                                        footer.
                                  required:
                                    - showCredit
                                  description: Settings for the resume's public web page, which uses the resume's
                                    template. Missing until the author changes
                                    them in Share.
                                check:
                                  type: object
                                  properties:
                                    ignored:
                                      type: array
                                      items:
                                        type: string
                                      description: Check issues the author chose to ignore, by issue key (the rule
                                        code and where it applies).
                                    hiddenTerms:
                                      type: array
                                      items:
                                        type: string
                                      description: Job-posting terms the author hid from Job match as not true for
                                        them.
                                  required:
                                    - ignored
                                    - hiddenTerms
                                  description: The author's Check choices for this resume. Not printed; missing
                                    until a choice is made.
                              required:
                                - template
                                - page
                                - design
                                - typography
                            sectionId:
                              type: string
                              minLength: 1
                            itemId:
                              type: string
                              minLength: 1
                          required:
                            - basics
                            - picture
                            - metadata
                            - sectionId
                            - itemId
                        layout:
                          enum:
                            - structured
                            - freeform
                          type: string
                          description: "structured: recipient name, company and date fields, a greeting
                            from the name, the body and a sign-off. freeform:
                            the recipient block and body as written (letters
                            from before structured letters)."
                          default: freeform
                        recipientName:
                          type: string
                          maxLength: 200
                          default: ""
                          description: "Who the letter is to: a person, or a team."
                        recipientCompany:
                          type: string
                          maxLength: 200
                          default: ""
                        letterDate:
                          anyOf:
                            - type: string
                              pattern: ^\d{4}-\d{2}-\d{2}$
                            - type: "null"
                          default: null
                          description: The letter's date, as YYYY-MM-DD.
                        id:
                          type: string
                        sourceResumeId:
                          anyOf:
                            - type: string
                            - type: "null"
                        sourceApplicationId:
                          anyOf:
                            - type: string
                            - type: "null"
                        senderLinked:
                          type: boolean
                          description: The sender's details come live from the source resume, instead of
                            the copy in `style`.
                        designLinked:
                          type: boolean
                          description: The design comes live from the source resume, instead of the copy
                            in `style`.
                        isLocked:
                          type: boolean
                          description: Locked letters can't be edited or moved to Trash until they're
                            unlocked.
                        revision:
                          type: integer
                          minimum: 1
                          maximum: 9007199254740991
                        createdAt:
                          type: string
                          format: date-time
                          x-native-type: date
                        updatedAt:
                          type: string
                          format: date-time
                          x-native-type: date
                      required:
                        - name
                        - recipient
                        - content
                        - style
                        - id
                        - sourceResumeId
                        - sourceApplicationId
                        - senderLinked
                        - designLinked
                        - isLocked
                        - revision
                        - createdAt
                        - updatedAt
                  total:
                    type: number
                required:
                  - items
                  - total
        default:
          description: Structured API error. See status and code; do not branch on message
            text.
          content:
            application/json:
              schema:
                type: object
                required:
                  - defined
                  - code
                  - status
                  - message
                properties:
                  defined:
                    type: boolean
                  code:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                  data: {}
      security:
        - apiKey: []
        - bearerAuth: []
        - cookieAuth: []
      x-codeSamples:
        - lang: bash
          label: cURL
          source: 'curl "https://rxresu.me/api/openapi/cover-letters" --header "x-api-key:
            <api-key>"'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: An OAuth access token issued by this instance for its API/MCP resource.
    cookieAuth:
      type: apiKey
      in: cookie
      name: better-auth.session_token
      description: Browser session (secure deployments use the __Secure- prefix).
        Cookie requests must originate from this instance.
    apiKey:
      type: apiKey
      name: x-api-key
      in: header
      description: The API key to authenticate requests.
````
