> ## 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.

# Get or provision campaign donation-echo address

> Lazy get-or-provision of a campaign Donation Echo deposit address for the given chain. May return 202 while provisioning.



## OpenAPI

````yaml https://www.donate.gg/api/v1/openapi get /campaigns/{campaignId}/donation-echo
openapi: 3.0.0
info:
  title: Donate Developer API
  version: 1.0.0
  description: >-
    Public JSON API for charities, configs, campaigns, tokens, and related
    catalog reads. 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 billing-tier bucket. Create/list/delete configs and project
    analytics require an API key. Spec routes (`/openapi`, `/postman`) are
    unauthenticated and unmetered.
servers:
  - url: /api/v1
    description: API v1 base path (relative to your dashboard origin)
security: []
paths:
  /campaigns/{campaignId}/donation-echo:
    get:
      summary: Get or provision campaign donation-echo address
      description: >-
        Lazy get-or-provision of a campaign Donation Echo deposit address for
        the given chain. May return 202 while provisioning.
      parameters:
        - schema:
            type: string
            minLength: 1
            description: Campaign id
          required: true
          description: Campaign id
          name: campaignId
          in: path
        - schema:
            type: integer
            minimum: 0
            exclusiveMinimum: true
            description: Chain id for the deposit address
          required: true
          description: Chain id for the deposit address
          name: chainId
          in: query
        - schema:
            type: string
            minLength: 1
            description: >-
              Optional. Omit for the anonymous IP budget (~20 req/min). Keys
              share their organization billing-tier limit.
          required: false
          description: >-
            Optional. Omit for the anonymous IP budget (~20 req/min). Keys share
            their organization billing-tier limit.
          name: donate-api-key
          in: header
      responses:
        '200':
          description: Deposit address is ready.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum requests allowed in the current window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix epoch seconds when the current window resets.
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - ready
                      chainId:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                      address:
                        type: string
                    required:
                      - status
                      - chainId
                      - address
                    additionalProperties: false
                  - type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - provisioning
                      chainId:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                      retryAfterMs:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                    required:
                      - status
                      - chainId
                      - retryAfterMs
                    additionalProperties: false
        '202':
          description: Provisioning in progress; poll again after retryAfterMs.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum requests allowed in the current window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix epoch seconds when the current window resets.
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - ready
                      chainId:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                      address:
                        type: string
                    required:
                      - status
                      - chainId
                      - address
                    additionalProperties: false
                  - type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - provisioning
                      chainId:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                      retryAfterMs:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                    required:
                      - status
                      - chainId
                      - retryAfterMs
                    additionalProperties: false
        '400':
          description: Validation error.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum requests allowed in the current window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix epoch seconds when the current window resets.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '404':
          description: Campaign or chain cannot accept direct deposits.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum requests allowed in the current window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix epoch seconds when the current window resets.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '409':
          description: Campaign is inactive or disabled for direct deposits.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum requests allowed in the current window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix epoch seconds when the current window resets.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '429':
          description: Provisioning rate limit exceeded.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum requests allowed in the current window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix epoch seconds when the current window resets.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '503':
          description: Deposit address temporarily unavailable.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum requests allowed in the current window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix epoch seconds when the current window resets.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
      security:
        - {}
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: donate-api-key
      description: >-
        Developer API key. Required for config create/list/delete and project
        analytics. Optional on public GET reads (anonymous callers are IP
        rate-limited). Obtain from the Developer dashboard.

````