diff --git a/pkg/providers/definitions/cloudflare-ai.yaml b/pkg/providers/definitions/cloudflare-ai.yaml new file mode 100644 index 0000000..a2a4a15 --- /dev/null +++ b/pkg/providers/definitions/cloudflare-ai.yaml @@ -0,0 +1,23 @@ +format_version: 1 +name: cloudflare-ai +display_name: Cloudflare Workers AI +tier: 5 +last_verified: "2026-04-05" +keywords: + - "cloudflare" + - "workers-ai" + - "CLOUDFLARE_API_TOKEN" + - "CLOUDFLARE_ACCOUNT_ID" + - "CF_API_TOKEN" + - "api.cloudflare.com" +patterns: + - regex: '[A-Za-z0-9_\-]{40}' + entropy_min: 4.5 + confidence: low +verify: + method: GET + url: https://api.cloudflare.com/client/v4/user/tokens/verify + headers: + Authorization: "Bearer {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/pkg/providers/definitions/helicone.yaml b/pkg/providers/definitions/helicone.yaml new file mode 100644 index 0000000..e7ffa0c --- /dev/null +++ b/pkg/providers/definitions/helicone.yaml @@ -0,0 +1,21 @@ +format_version: 1 +name: helicone +display_name: Helicone +tier: 5 +last_verified: "2026-04-05" +keywords: + - "helicone" + - "HELICONE_API_KEY" + - "sk-helicone-" + - "api.helicone.ai" +patterns: + - regex: 'sk-helicone-[a-z0-9]{7}-[a-z0-9]{7}-[a-z0-9]{7}-[a-z0-9]{7}' + entropy_min: 3.5 + confidence: high +verify: + method: GET + url: https://api.helicone.ai/v1/key/verify + headers: + Authorization: "Bearer {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/pkg/providers/definitions/litellm.yaml b/pkg/providers/definitions/litellm.yaml new file mode 100644 index 0000000..755fcf7 --- /dev/null +++ b/pkg/providers/definitions/litellm.yaml @@ -0,0 +1,20 @@ +format_version: 1 +name: litellm +display_name: LiteLLM Proxy +tier: 5 +last_verified: "2026-04-05" +keywords: + - "litellm" + - "LITELLM_API_KEY" + - "LITELLM_MASTER_KEY" + - "LITELLM_PROXY_API_KEY" +patterns: + - regex: 'sk-[A-Za-z0-9_\-]{20,}' + entropy_min: 4.0 + confidence: low +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/pkg/providers/definitions/openrouter.yaml b/pkg/providers/definitions/openrouter.yaml new file mode 100644 index 0000000..fb679ec --- /dev/null +++ b/pkg/providers/definitions/openrouter.yaml @@ -0,0 +1,24 @@ +format_version: 1 +name: openrouter +display_name: OpenRouter +tier: 5 +last_verified: "2026-04-05" +keywords: + - "openrouter" + - "OPENROUTER_API_KEY" + - "openrouter.ai" + - "sk-or-" +patterns: + - regex: 'sk-or-v1-[a-f0-9]{64}' + entropy_min: 4.0 + confidence: high + - regex: 'sk-or-[A-Za-z0-9]{40,}' + entropy_min: 4.0 + confidence: medium +verify: + method: GET + url: https://openrouter.ai/api/v1/auth/key + headers: + Authorization: "Bearer {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/pkg/providers/definitions/portkey.yaml b/pkg/providers/definitions/portkey.yaml new file mode 100644 index 0000000..241c26f --- /dev/null +++ b/pkg/providers/definitions/portkey.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: portkey +display_name: Portkey +tier: 5 +last_verified: "2026-04-05" +keywords: + - "portkey" + - "PORTKEY_API_KEY" + - "api.portkey.ai" + - "portkey-ai" +verify: + method: GET + url: https://api.portkey.ai/v1/feedback + headers: + x-portkey-api-key: "{KEY}" + valid_status: [200, 400] + invalid_status: [401, 403] diff --git a/pkg/providers/definitions/vercel-ai.yaml b/pkg/providers/definitions/vercel-ai.yaml new file mode 100644 index 0000000..f8dc492 --- /dev/null +++ b/pkg/providers/definitions/vercel-ai.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: vercel-ai +display_name: Vercel AI Gateway +tier: 5 +last_verified: "2026-04-05" +keywords: + - "vercel" + - "VERCEL_AI_GATEWAY" + - "AI_GATEWAY_API_KEY" + - "vercel.ai" + - "ai-sdk" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/providers/cloudflare-ai.yaml b/providers/cloudflare-ai.yaml new file mode 100644 index 0000000..a2a4a15 --- /dev/null +++ b/providers/cloudflare-ai.yaml @@ -0,0 +1,23 @@ +format_version: 1 +name: cloudflare-ai +display_name: Cloudflare Workers AI +tier: 5 +last_verified: "2026-04-05" +keywords: + - "cloudflare" + - "workers-ai" + - "CLOUDFLARE_API_TOKEN" + - "CLOUDFLARE_ACCOUNT_ID" + - "CF_API_TOKEN" + - "api.cloudflare.com" +patterns: + - regex: '[A-Za-z0-9_\-]{40}' + entropy_min: 4.5 + confidence: low +verify: + method: GET + url: https://api.cloudflare.com/client/v4/user/tokens/verify + headers: + Authorization: "Bearer {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/providers/helicone.yaml b/providers/helicone.yaml new file mode 100644 index 0000000..e7ffa0c --- /dev/null +++ b/providers/helicone.yaml @@ -0,0 +1,21 @@ +format_version: 1 +name: helicone +display_name: Helicone +tier: 5 +last_verified: "2026-04-05" +keywords: + - "helicone" + - "HELICONE_API_KEY" + - "sk-helicone-" + - "api.helicone.ai" +patterns: + - regex: 'sk-helicone-[a-z0-9]{7}-[a-z0-9]{7}-[a-z0-9]{7}-[a-z0-9]{7}' + entropy_min: 3.5 + confidence: high +verify: + method: GET + url: https://api.helicone.ai/v1/key/verify + headers: + Authorization: "Bearer {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/providers/litellm.yaml b/providers/litellm.yaml new file mode 100644 index 0000000..755fcf7 --- /dev/null +++ b/providers/litellm.yaml @@ -0,0 +1,20 @@ +format_version: 1 +name: litellm +display_name: LiteLLM Proxy +tier: 5 +last_verified: "2026-04-05" +keywords: + - "litellm" + - "LITELLM_API_KEY" + - "LITELLM_MASTER_KEY" + - "LITELLM_PROXY_API_KEY" +patterns: + - regex: 'sk-[A-Za-z0-9_\-]{20,}' + entropy_min: 4.0 + confidence: low +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/providers/openrouter.yaml b/providers/openrouter.yaml new file mode 100644 index 0000000..fb679ec --- /dev/null +++ b/providers/openrouter.yaml @@ -0,0 +1,24 @@ +format_version: 1 +name: openrouter +display_name: OpenRouter +tier: 5 +last_verified: "2026-04-05" +keywords: + - "openrouter" + - "OPENROUTER_API_KEY" + - "openrouter.ai" + - "sk-or-" +patterns: + - regex: 'sk-or-v1-[a-f0-9]{64}' + entropy_min: 4.0 + confidence: high + - regex: 'sk-or-[A-Za-z0-9]{40,}' + entropy_min: 4.0 + confidence: medium +verify: + method: GET + url: https://openrouter.ai/api/v1/auth/key + headers: + Authorization: "Bearer {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/providers/portkey.yaml b/providers/portkey.yaml new file mode 100644 index 0000000..241c26f --- /dev/null +++ b/providers/portkey.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: portkey +display_name: Portkey +tier: 5 +last_verified: "2026-04-05" +keywords: + - "portkey" + - "PORTKEY_API_KEY" + - "api.portkey.ai" + - "portkey-ai" +verify: + method: GET + url: https://api.portkey.ai/v1/feedback + headers: + x-portkey-api-key: "{KEY}" + valid_status: [200, 400] + invalid_status: [401, 403] diff --git a/providers/vercel-ai.yaml b/providers/vercel-ai.yaml new file mode 100644 index 0000000..f8dc492 --- /dev/null +++ b/providers/vercel-ai.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: vercel-ai +display_name: Vercel AI Gateway +tier: 5 +last_verified: "2026-04-05" +keywords: + - "vercel" + - "VERCEL_AI_GATEWAY" + - "AI_GATEWAY_API_KEY" + - "vercel.ai" + - "ai-sdk" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: []