Using RainDragon with AI Gateways

Route requests to RainDragon through Cloudflare AI Gateway, Portkey, Helicone or Bifrost

RainDragon's API is OpenAI-compatible, so each gateway below can use it as a custom OpenAI-style provider. You keep your gateway's logging, caching and fallbacks; requests are billed to your RainDragon API key. Models: google/gemma-4-26B-A4B-it and google/gemma-4-31B-it.

Cloudflare AI Gateway

In the Cloudflare dashboard go to AI Gateway > Custom Providers > Add Custom Provider and enter:

Name:     RainDragon
Slug:     raindragon
Base URL: https://inference.raindragon.ai

Use the root domain as the base URL (no /v1); the path goes in the request. Then call it through your gateway:

curl https://gateway.ai.cloudflare.com/v1/$ACCOUNT_ID/$GATEWAY_ID/custom-raindragon/v1/chat/completions \
  -H "Authorization: Bearer your-api-key" \
  -H "cf-aig-authorization: Bearer $CF_AIG_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"model": "google/gemma-4-26B-A4B-it", "messages": [{"role": "user", "content": "Hello!"}]}'

With the OpenAI Python SDK:

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://gateway.ai.cloudflare.com/v1/ACCOUNT_ID/GATEWAY_ID/custom-raindragon/v1",
    default_headers={"cf-aig-authorization": "Bearer CF_AIG_TOKEN"},
)

response = client.chat.completions.create(
    model="google/gemma-4-26B-A4B-it",
    messages=[{"role": "user", "content": "Hello!"}],
)

The cf-aig-authorization header is only needed if your gateway has authentication turned on.

Portkey

Use Portkey's OpenAI provider and point its custom host at RainDragon:

curl https://api.portkey.ai/v1/chat/completions \
  -H "x-portkey-api-key: $PORTKEY_API_KEY" \
  -H "x-portkey-provider: openai" \
  -H "x-portkey-custom-host: https://inference.raindragon.ai/v1" \
  -H "Authorization: Bearer your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"model": "google/gemma-4-26B-A4B-it", "messages": [{"role": "user", "content": "Hello!"}]}'

With the Portkey Python SDK:

from portkey_ai import Portkey

client = Portkey(
    api_key="PORTKEY_API_KEY",
    provider="openai",
    custom_host="https://inference.raindragon.ai/v1",
    Authorization="Bearer your-api-key",
)

response = client.chat.completions.create(
    model="google/gemma-4-26B-A4B-it",
    messages=[{"role": "user", "content": "Hello!"}],
)

For the self-hosted open-source gateway, send the same headers to http://localhost:8787/v1/chat/completions and drop x-portkey-api-key.

Helicone

Send requests to Helicone's gateway and name RainDragon as the target with the Helicone-Target-Url header:

curl https://gateway.helicone.ai/v1/chat/completions \
  -H "Authorization: Bearer your-api-key" \
  -H "Helicone-Auth: Bearer $HELICONE_API_KEY" \
  -H "Helicone-Target-Url: https://inference.raindragon.ai" \
  -H "Content-Type: application/json" \
  -d '{"model": "google/gemma-4-26B-A4B-it", "messages": [{"role": "user", "content": "Hello!"}]}'

With the OpenAI Python SDK:

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://gateway.helicone.ai/v1",
    default_headers={
        "Helicone-Auth": "Bearer HELICONE_API_KEY",
        "Helicone-Target-Url": "https://inference.raindragon.ai",
    },
)

Bifrost

Add RainDragon as a custom provider in Bifrost's config.json, using the openai base type:

{
  "providers": {
    "raindragon": {
      "network_config": {
        "base_url": "https://inference.raindragon.ai"
      },
      "keys": [
        {
          "name": "raindragon-key-1",
          "value": "env.RAINDRAGON_API_KEY",
          "models": ["*"],
          "weight": 1.0
        }
      ],
      "custom_provider_config": {
        "base_provider_type": "openai"
      }
    }
  }
}

Set your key, start Bifrost, and prefix the model with the provider name:

export RAINDRAGON_API_KEY="your-api-key"

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "raindragon/google/gemma-4-26B-A4B-it", "messages": [{"role": "user", "content": "Hello!"}]}'

If Bifrost answers virtual key is required, either send an x-bf-vk header with a virtual key that allows the raindragon provider, or turn off client.enforce_auth_on_inference in config.json (Enforce Virtual Keys on Inference in the UI).

Generate API keys in your dashboard under API Settings.