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

# Submit an API access application

> Sends an email-verification link before the request enters manual HFSAA review.



## OpenAPI

````yaml /openapi.yaml post /v1/developer/applications
openapi: 3.1.0
info:
  title: HFSAA Public API
  version: 1.2.2
  description: >
    API-key protected access to HFSAA-certified restaurants, meat markets, and
    dining halls.

    Every directory-data route in the `/v1` namespace requires an API key; there
    are no

    anonymous data endpoints. Public health and developer-onboarding routes are
    explicitly

    marked with `security: []` and do not expose directory data.

    Developers can request test access without creating an account. Test keys do
    not

    expire automatically, but they are restricted to the test environment and
    quota.

    Successful data responses may be cached privately for no more than one hour.
  contact:
    name: HFSAA
servers:
  - url: https://api.hfsaa.org
    description: Production
  - url: https://hfsaa-public-api-staging.idris-ocasio.workers.dev
    description: Test
security:
  - ApiKeyAuth: []
paths:
  /v1/developer/applications:
    post:
      tags:
        - Developer Access
      summary: Submit an API access application
      description: >-
        Sends an email-verification link before the request enters manual HFSAA
        review.
      operationId: submitDeveloperApplication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeveloperApplicationInput'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/DeveloperApplicationInput'
      responses:
        '202':
          description: The application was accepted for email verification.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationSubmission'
        '400':
          $ref: '#/components/responses/BadRequest'
        '413':
          description: The application body is too large.
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security: []
components:
  schemas:
    DeveloperApplicationInput:
      type: object
      additionalProperties: false
      required:
        - applicant_name
        - email
        - use_case
        - requested_tier
      properties:
        applicant_name:
          type: string
          maxLength: 120
        email:
          type: string
          format: email
          maxLength: 320
        organization:
          type:
            - string
            - 'null'
          maxLength: 160
        website:
          type:
            - string
            - 'null'
          format: uri
          maxLength: 500
        use_case:
          type: string
          maxLength: 2000
        requested_tier:
          type: string
          enum:
            - test
            - production
        expected_monthly_requests:
          type:
            - integer
            - 'null'
          minimum: 1
          maximum: 100000000
    ApplicationSubmission:
      type: object
      additionalProperties: false
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - verification_required
    Error:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              example: invalid_parameter
            message:
              type: string
              example: limit must be between 1 and 100.
  responses:
    BadRequest:
      description: The request contains an invalid parameter.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: The API key's per-minute or monthly allowance was exceeded.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
            example: 60
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServiceUnavailable:
      description: The service is temporarily unavailable. Retry after the indicated delay.
      headers:
        Retry-After:
          description: Seconds to wait before retrying when known.
          schema:
            type: integer
            example: 60
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: hfsaa_test_... or hfsaa_live_...
      description: 'Use the API key as `Authorization: Bearer <api-key>`.'

````