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

# Request a charity

> Ask for a charity to be added to Donate.gg. The registration is checked against the official register, then saved for review; a request never lists a charity by itself and review has no fixed timeline. The response status says whether the charity is already listed, was requested now, was already requested, or was already reviewed. Repeating a request is safe: it counts as demand and does not reopen a review decision. Requests have their own budget per project (60 per hour) on top of the normal API rate limit.



## OpenAPI

````yaml https://api.donate.gg/api/openapi post /v1/charity-requests
openapi: 3.1.1
info:
  title: Donate Developer API
  version: 1.0.0
  description: >-
    Public JSON API for charities, configs, campaigns, tokens, and related
    catalog reads. Operations are grouped by version (`/v1`, and later `/v2`).
    GET/HEAD catalog routes may omit `donate-api-key` and are IP rate-limited
    for anonymous callers (~20 req/min). Authenticated keys share one
    organization rate-tier bucket. Create/list configs and project analytics
    require an API key. Configs are permanent; the retained authenticated DELETE
    endpoint rejects deletion. Unpublished internal routes are omitted. Spec
    routes (`/api/openapi`, `/api/postman`) are unauthenticated and unmetered.
servers:
  - url: /api
    description: API origin. Version prefixes live on each operation path.
security:
  - {}
  - ApiKeyAuth: []
paths:
  /v1/charity-requests:
    post:
      summary: Request a charity
      description: >-
        Ask for a charity to be added to Donate.gg. The registration is checked
        against the official register, then saved for review; a request never
        lists a charity by itself and review has no fixed timeline. The response
        status says whether the charity is already listed, was requested now,
        was already requested, or was already reviewed. Repeating a request is
        safe: it counts as demand and does not reopen a review decision.
        Requests have their own budget per project (60 per hour) on top of the
        normal API rate limit.
      operationId: v1.charityRequests.create
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                register:
                  enum:
                    - united-states
                    - england-wales
                    - scotland
                    - northern-ireland
                    - france
                    - japan
                    - new-zealand
                    - norway
                    - netherlands
                    - canada
                    - australia
                  type: string
                  description: Register id from GET /charity-requests/registers
                registration:
                  type: string
                  description: Registration number in the format the register accepts
              required:
                - register
                - registration
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  register:
                    enum:
                      - united-states
                      - england-wales
                      - scotland
                      - northern-ireland
                      - france
                      - japan
                      - new-zealand
                      - norway
                      - netherlands
                      - canada
                      - australia
                    type: string
                    description: Register id from GET /charity-requests/registers
                  registration:
                    type: string
                    description: Canonical registration number
                  status:
                    enum:
                      - listed
                      - requested
                      - already_requested
                      - needs_info
                      - reviewed
                    type: string
                  charity:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: string
                          slug:
                            type: string
                        required:
                          - id
                          - slug
                        additionalProperties: false
                        description: >-
                          The public charity, when this registration is listed
                          on Donate.gg
                      - type: 'null'
                required:
                  - register
                  - registration
                  - status
                  - charity
                additionalProperties: false
        '400':
          description: '400'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: VALIDATION_ERROR
                      status:
                        const: 400
                      message:
                        type: string
                        default: Validation failed
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                          code:
                            const: VALIDATION_ERROR
                          issues:
                            type: array
                            items:
                              anyOf:
                                - {}
                                - type: 'null'
                        required:
                          - error
                          - code
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: INVALID_JSON
                      status:
                        const: 400
                      message:
                        type: string
                        default: Invalid JSON body
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                          code:
                            const: INVALID_JSON
                        required:
                          - error
                          - code
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: INVALID_REGISTRATION
                      status:
                        const: 400
                      message:
                        type: string
                        default: >-
                          This registration number cannot be used with the
                          selected register
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                          code:
                            const: INVALID_REGISTRATION
                        required:
                          - error
                          - code
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: REGISTRATION_NOT_FOUND
                      status:
                        const: 404
                      message:
                        type: string
                        default: >-
                          No current entry with this registration number was
                          found in the register
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                          code:
                            const: REGISTRATION_NOT_FOUND
                        required:
                          - error
                          - code
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '409':
          description: '409'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: CHARITY_UNAVAILABLE
                      status:
                        const: 409
                      message:
                        type: string
                        default: This charity is currently unavailable
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                          code:
                            const: CHARITY_UNAVAILABLE
                        required:
                          - error
                          - code
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: NEEDS_MANUAL_REVIEW
                      status:
                        const: 409
                      message:
                        type: string
                        default: >-
                          This registration needs manual review before it can be
                          requested
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                          code:
                            const: NEEDS_MANUAL_REVIEW
                        required:
                          - error
                          - code
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '422':
          description: '422'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: NOT_ELIGIBLE
                      status:
                        const: 422
                      message:
                        type: string
                        default: This register entry cannot be requested
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                          code:
                            const: NOT_ELIGIBLE
                        required:
                          - error
                          - code
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '429':
          description: '429'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: RATE_LIMIT_EXCEEDED
                      status:
                        const: 429
                      message:
                        type: string
                        default: Rate limit exceeded
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                          code:
                            const: RATE_LIMIT_EXCEEDED
                        required:
                          - error
                          - code
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '503':
          description: '503'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: PROVIDER_UNAVAILABLE
                      status:
                        const: 503
                      message:
                        type: string
                        default: Provider temporarily unavailable
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                          code:
                            const: PROVIDER_UNAVAILABLE
                        required:
                          - error
                          - code
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
      security:
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: donate-api-key
      description: >-
        Developer API key. Required for config create/list and project
        analytics. The disabled config DELETE endpoint also requires
        authentication. Optional on public GET reads (anonymous callers are IP
        rate-limited). Obtain from the Developer dashboard.

````

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