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

# Create Contact Request

> Submits an inbound contact request. The example request and response below are illustrative only.



## OpenAPI

````yaml POST /contact
openapi: 3.1.0
info:
  title: Candidate Profile API
  version: 1.0.0
  description: >-
    Personal candidate profile API published at api.jonahanderson.me. Every
    endpoint except POST /auth/token requires bearer-token authentication. All
    example payloads in this spec are illustrative and do not represent live
    data.
servers:
  - url: https://api.jonahanderson.me
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Authentication
  - name: Candidate
  - name: Experience
  - name: Projects
  - name: Resume
  - name: Contact
paths:
  /contact:
    post:
      tags:
        - Contact
      summary: Submit a contact request
      description: >-
        Submits an inbound contact request. The example request and response
        below are illustrative only.
      operationId: createContact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactRequest'
            examples:
              illustrativeRequest:
                summary: Illustrative request
                description: Sample values only. Live requests will vary.
                value:
                  name: Avery Lee
                  email: avery.lee@example.com
                  company: Example Ventures
                  message: >-
                    I would love to schedule time to talk about a product
                    leadership role.
      responses:
        '201':
          description: Contact request accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactResponse'
              examples:
                illustrativeResponse:
                  summary: Illustrative response
                  description: Sample values only. Live response data will vary.
                  value:
                    id: contact_example_001
                    status: received
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    ContactRequest:
      type: object
      description: Payload used to submit a contact request.
      required:
        - name
        - email
        - company
        - message
      properties:
        name:
          type: string
          description: Name of the person submitting the request.
          example: Avery Lee
        email:
          type: string
          format: email
          description: Email address used for follow-up.
          example: avery.lee@example.com
        company:
          type: string
          description: Company or organization associated with the request.
          example: Example Ventures
        message:
          type: string
          description: Message content submitted through the contact form.
          example: >-
            I would love to schedule time to talk about a product leadership
            role.
      example:
        name: Avery Lee
        email: avery.lee@example.com
        company: Example Ventures
        message: I would love to schedule time to talk about a product leadership role.
    ContactResponse:
      type: object
      description: Acknowledgement returned after a contact request is accepted.
      required:
        - id
        - status
      properties:
        id:
          type: string
          description: Identifier assigned to the submitted contact request.
          example: contact_example_001
        status:
          type: string
          description: Processing state for the submitted request.
          example: received
      example:
        id: contact_example_001
        status: received
    ErrorResponse:
      type: object
      description: Wrapper object for API errors.
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/Error'
      example:
        error:
          code: BAD_REQUEST
          message: The request payload is missing a required field.
    Error:
      type: object
      description: Standard error payload returned by the API.
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Machine-readable error code.
          example: BAD_REQUEST
        message:
          type: string
          description: Human-readable explanation of the error.
          example: The request payload is missing a required field.
      example:
        code: BAD_REQUEST
        message: The request payload is missing a required field.
  responses:
    BadRequest:
      description: Invalid request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            illustrativeResponse:
              summary: Illustrative validation error
              description: Sample values only. Live error messages will vary.
              value:
                error:
                  code: BAD_REQUEST
                  message: The request payload is missing a required field.
    Unauthorized:
      description: Bearer token is missing, invalid, or altered.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missingOrInvalidToken:
              summary: Valid bearer token required
              value:
                error:
                  code: UNAUTHORIZED
                  message: A valid bearer token is required
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Signed bearer token returned by POST /auth/token. Send it in the
        Authorization header as `Bearer <token>`.

````