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

# Image proxy endpoint

> Proxies (and streams) an image from an allow-listed remote host so it can be
embedded without CORS or mixed-content issues. The `url` must point at one of
the allow-listed hosts, otherwise the request is rejected.

**Allow-listed hosts:** `ipfs.io`, `gateway.pinata.cloud`, `arweave.net`,
`nftstorage.link`, `cloudflare-ipfs.com`, `cf-ipfs.com`, `i.raze.sh`,
`pbs.twimg.com`, `abs.twimg.com`, `cdn.discordapp.com`,
`media.discordapp.net`, `i.imgur.com`, `imgur.com`,
`raw.githubusercontent.com`, `shdw-drive.genesysgo.net`,
`image.dexscreener.com`, `dd.dexscreener.com`, `dweb.link`, `w3s.link`.

Note: error responses are returned as `text/plain`, not JSON.




## OpenAPI

````yaml openapi-spec/history.yaml get /api/sol/image/proxy
openapi: 3.0.3
info:
  title: Raze Database API
  description: >
    Paid subscription API for Solana transaction data and history.


    Also hosts write utilities (`/utils/sol/*`): token launch, transfer, burn,

    consolidate, fees claim/config, and agent initialize — previously on

    `router.raze.bot`. Mixer/distribute removed 2026-07-25.


    ## Batch Requests

    All endpoints with path parameters (mint, signer, address, tokenMint,
    ownerAddress) support batch queries

    via comma-separated values. For example:
    `/api/sol/trades/mint/mint1,mint2,mint3?limit=50`


    - Maximum 10 values per batch request

    - Each value must be a valid address (>= 32 characters)

    - Single values behave identically to non-batch requests

    - Batch response format: `{ "success": true, "results": { "value1": {...},
    "value2": {...} }, "count": N, "timestamp": "..." }`

    - Each key in `results` contains the full single-entity response

    - Queries run in parallel for maximum performance
  version: 1.0.0
servers:
  - url: https://api.raze.bot
    description: >-
      Raze global History API — GeoDNS routes to the nearest region
      automatically
security:
  - ApiKeyAuth: []
paths:
  /api/sol/image/proxy:
    get:
      summary: Image proxy endpoint
      description: >
        Proxies (and streams) an image from an allow-listed remote host so it
        can be

        embedded without CORS or mixed-content issues. The `url` must point at
        one of

        the allow-listed hosts, otherwise the request is rejected.


        **Allow-listed hosts:** `ipfs.io`, `gateway.pinata.cloud`,
        `arweave.net`,

        `nftstorage.link`, `cloudflare-ipfs.com`, `cf-ipfs.com`, `i.raze.sh`,

        `pbs.twimg.com`, `abs.twimg.com`, `cdn.discordapp.com`,

        `media.discordapp.net`, `i.imgur.com`, `imgur.com`,

        `raw.githubusercontent.com`, `shdw-drive.genesysgo.net`,

        `image.dexscreener.com`, `dd.dexscreener.com`, `dweb.link`, `w3s.link`.


        Note: error responses are returned as `text/plain`, not JSON.
      operationId: proxyImage
      parameters:
        - name: url
          in: query
          required: true
          schema:
            type: string
          description: Absolute image URL on an allow-listed host.
      responses:
        '200':
          description: Success - Returns image binary data
          content:
            image/*:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            Missing/invalid `url` or host not in the allow-list (text/plain
            body).
          content:
            text/plain:
              schema:
                type: string
        '502':
          description: Upstream fetch failed (text/plain body).
          content:
            text/plain:
              schema:
                type: string
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: apiKey

````