fix(api): remove Completions.me rickroll provider (discussion #3293) (#3302)

Integrated into release/v3.8.13
This commit is contained in:
Diego Rodrigues de Sa e Souza
2026-06-06 12:18:18 -03:00
committed by GitHub
parent bc93ffb347
commit f49df6e384
7 changed files with 34 additions and 51 deletions

View File

@@ -51,7 +51,6 @@ Biggest **documented** contributors: `mistral` 1.00B, `longcat` 150M, `cloudflar
| `ai21` | ToS §4.2/§8.2 prohibits sublicensing or distributing API access to third parties; §3.3 restricts trial/evaluation products to "internal evaluation on… |
| `amazon-q` | Product is discontinued for new signups; existing users are subject to AWS Customer Agreement which governs use of managed services — self-hosted pro… |
| `blackbox` | ToS explicitly prohibits sublicensing, reselling, making the service available to third parties, and building derivative services — a self-hosted per… |
| `completions` | No published ToS found (404 on /terms, /faq, /docs). The service proxies Anthropic/OpenAI/Google APIs without authorization, violating those upstream… |
| `coze` | Coze ToS explicitly restricts use to "personal and non-commercial use" and prohibits renting, distributing, sublicensing, or reselling the service; a… |
| `duckduckgo-web` | Duck.ai ToS (duckduckgo.com/duckai/privacy-terms) explicitly prohibits "automated querying and developing or offering AI services" and circumventing … |
| `featherless-ai` | Individual plans explicitly restricted to "interactive use or proto-typing and experimentation by the purchaser" — inference resale and proxy use req… |
@@ -201,7 +200,6 @@ Biggest **documented** contributors: `mistral` 1.00B, `longcat` 150M, `cloudflar
| `bytez` | aggregator | recurring-credit | — | med | ambiguous | Bytez offers $1 in free credits that refresh every 4 weeks (credits expire if unused within the cycle). Free tier is li… |
| `chutes` | aggregator | discontinued | — | high | unknown | The free Early Access program (200 requests/day) was officially discontinued on March 15, 2026. Chutes.ai now operates … |
| `comfyui` | image | keyless-unlimited | — | high | ok | ComfyUI is a fully open-source (GPL-3.0), self-hosted diffusion model interface that runs entirely on local hardware wi… |
| `completions` | aggregator | keyless-unlimited | — | med | caution | Completions.me claims to offer completely free, unlimited access to Claude Opus 4.6, GPT-5.2, Gemini 3.1 Pro, and 15+ m… |
| `coze` | aggregator | recurring-daily | — | med | caution | Coze's free plan provides 10 message credits per day — a platform-level unit (not raw LLM tokens) where each model call… |
| `deepinfra` | aggregator | one-time-trial-credit | — | med | caution | DeepInfra is a pay-as-you-go inference provider that explicitly requires a credit card or prepayment to use services; a… |
| `deepseek` | llm-chat | one-time-trial-credit | — | high | caution | DeepSeek offers a one-time signup credit of 5 million tokens (no credit card required) valid for 30 days from account c… |
@@ -281,7 +279,6 @@ Biggest **documented** contributors: `mistral` 1.00B, `longcat` 150M, `cloudflar
- **`byteplus`** — Our catalog shipped "(none)" but BytePlus ModelArk does have a free tier: a one-time trial credit of 500k tokens per LLM model for new accounts. The catalog underreports this.
- **`cerebras`** — TPM appears tightened from 60K to 30K on current documented models (gpt-oss-120b, zai-glm-4.7). RPM of 5 is now explicitly documented (was not in our shipped note). Daily token cap of 1M/day is uncha…
- **`chutes`** — The shipped freeNote says "Free tier available" but as of March 15, 2026, the free tier has been officially discontinued. The catalog note is stale and should be updated to reflect that there is no r…
- **`completions`** — Our shipped freeNote ("Free unlimited access to Claude, GPT, Gemini — no rate limits") still matches the site's self-described claims. However, the service is a legally dubious, short-lived aggregato…
- **`coze`** — The shipped note "Free ByteDance agent platform" is directionally accurate but omits that the free tier is now tightly credit-capped (10 credits/day ≈ 5100 messages depending on model), a constraint…
- **`deepinfra`** — Our shipped freeNote says "Free signup credits for API testing" — this appears stale. The official pricing page now requires card/prepayment with no documented general free signup credit. The free ti…
- **`deepseek`** — Our shipped note says "5M free tokens on signup - no credit card required" — this is still accurate for the one-time grant, but importantly the credits expire after 30 days (not mentioned in the ship…

View File

@@ -1,16 +1,16 @@
---
title: "Provider Reference"
version: 3.8.11
lastUpdated: 2026-06-05
version: 3.8.12
lastUpdated: 2026-06-06
---
# Provider Reference
> **Auto-generated** from `src/shared/constants/providers.ts` — do not edit by hand.
> Regenerate with: `npm run gen:provider-reference`
> **Last generated:** 2026-06-05
> **Last generated:** 2026-06-06
Total providers: **224**. See category breakdown below.
Total providers: **223**. See category breakdown below.
## Categories
@@ -80,7 +80,7 @@ Use the dashboard at `/dashboard/providers` to enable, configure, and test each
| `v0-vercel-web` | `v0` | v0 Vercel Web (Code Gen) | Web cookie | [link](https://v0.dev) | Paste your session cookie from v0.dev (DevTools → Application → Cookies) |
| `venice-web` | `ven` | Venice Web (Privacy) | Web cookie | [link](https://venice.ai) | Paste your session cookie from venice.ai (DevTools → Application → Cookies) |
## API Key Providers (paid / paid-with-free-credits) (152)
## API Key Providers (paid / paid-with-free-credits) (151)
| ID | Alias | Name | Tags | Website | Notes |
|----|-------|------|------|---------|-------|
@@ -114,7 +114,6 @@ Use the dashboard at `/dashboard/providers` to enable, configure, and test each
| `codestral` | `codestral` | Codestral | API key | [link](https://mistral.ai) | — |
| `cohere` | `cohere` | Cohere | API key | [link](https://cohere.com) | Free Trial: 1,000 API calls/month for testing, no credit card required |
| `command-code` | `cmd` | Command Code | API key | [link](https://commandcode.ai/) | Use a Command Code API key. Requests are sent to Command Code's /alpha/generate endpoint. |
| `completions` | `cpl` | Completions.me | API key | [link](https://completions.me) | Free unlimited access to Claude, GPT, Gemini — no credit card, no rate limits |
| `coze` | `coze` | Coze | API key | [link](https://coze.com) | Get API key at coze.com/open/api |
| `crof` | `crof` | CrofAI | API key | [link](https://crof.ai) | — |
| `databricks` | `databricks` | Databricks | API key, enterprise | [link](https://www.databricks.com) | — |

View File

@@ -170,14 +170,6 @@ export const FREE_MODEL_BUDGETS: FreeModelBudget[] = [
{ provider: "bazaarlink", modelId: "mistral-medium-3.1", displayName: "Mistral Medium 3.1", monthlyTokens: 3600000, creditTokens: 0, freeType: "recurring-daily", poolKey: "bazaarlink", tos: "caution" },
{ provider: "bazaarlink", modelId: "mistral-small-2603", displayName: "Mistral Small 4", monthlyTokens: 3600000, creditTokens: 0, freeType: "recurring-daily", poolKey: "bazaarlink", tos: "caution" },
{ provider: "bazaarlink", modelId: "nemotron-3-super-120b-a12b", displayName: "Nemotron 3 Super", monthlyTokens: 3600000, creditTokens: 0, freeType: "recurring-daily", poolKey: "bazaarlink", tos: "caution" },
{ provider: "completions", modelId: "claude-opus-4.6", displayName: "Claude Opus 4.6", monthlyTokens: 0, creditTokens: 0, freeType: "keyless", poolKey: "completions", tos: "avoid" },
{ provider: "completions", modelId: "claude-sonnet-4.6", displayName: "Claude Sonnet 4.6", monthlyTokens: 0, creditTokens: 0, freeType: "keyless", poolKey: "completions", tos: "avoid" },
{ provider: "completions", modelId: "claude-haiku-4.5", displayName: "Claude Haiku 4.5", monthlyTokens: 0, creditTokens: 0, freeType: "keyless", poolKey: "completions", tos: "avoid" },
{ provider: "completions", modelId: "gpt-5.2", displayName: "GPT-5.2", monthlyTokens: 0, creditTokens: 0, freeType: "keyless", poolKey: "completions", tos: "avoid" },
{ provider: "completions", modelId: "gpt-5-mini", displayName: "GPT-5 Mini", monthlyTokens: 0, creditTokens: 0, freeType: "keyless", poolKey: "completions", tos: "avoid" },
{ provider: "completions", modelId: "gpt-4.1", displayName: "GPT-4.1", monthlyTokens: 0, creditTokens: 0, freeType: "keyless", poolKey: "completions", tos: "avoid" },
{ provider: "completions", modelId: "gemini-3.1-pro-preview", displayName: "Gemini 3.1 Pro", monthlyTokens: 0, creditTokens: 0, freeType: "keyless", poolKey: "completions", tos: "avoid" },
{ provider: "completions", modelId: "gemini-3-flash-preview", displayName: "Gemini 3 Flash", monthlyTokens: 0, creditTokens: 0, freeType: "keyless", poolKey: "completions", tos: "avoid" },
{ provider: "mistral", modelId: "mistral-large-latest", displayName: "Mistral Large 3", monthlyTokens: 1000000000, creditTokens: 0, freeType: "recurring-monthly", poolKey: "mistral", tos: "caution" },
{ provider: "mistral", modelId: "mistral-medium-3-5", displayName: "Mistral Medium 3.5", monthlyTokens: 1000000000, creditTokens: 0, freeType: "recurring-monthly", poolKey: "mistral", tos: "caution" },
{ provider: "mistral", modelId: "mistral-small-latest", displayName: "Mistral Small 4", monthlyTokens: 1000000000, creditTokens: 0, freeType: "recurring-monthly", poolKey: "mistral", tos: "caution" },

View File

@@ -2689,25 +2689,6 @@ const _REGISTRY_EAGER: Record<string, RegistryEntry> = {
{ id: "nemotron-3-super-120b-a12b", name: "Nemotron 3 Super" },
],
},
completions: {
id: "completions",
alias: "cpl",
format: "openai",
executor: "default",
baseUrl: "https://completions.me/api/v1/chat/completions",
authType: "apikey",
authHeader: "bearer",
models: [
{ id: "claude-opus-4.6", name: "Claude Opus 4.6" },
{ id: "claude-sonnet-4.6", name: "Claude Sonnet 4.6" },
{ id: "claude-haiku-4.5", name: "Claude Haiku 4.5" },
{ id: "gpt-5.2", name: "GPT-5.2" },
{ id: "gpt-5-mini", name: "GPT-5 Mini" },
{ id: "gpt-4.1", name: "GPT-4.1" },
{ id: "gemini-3.1-pro-preview", name: "Gemini 3.1 Pro" },
{ id: "gemini-3-flash-preview", name: "Gemini 3 Flash" },
],
},
xai: {
id: "xai",
alias: "xai",

View File

@@ -933,18 +933,6 @@ export const APIKEY_PROVIDERS = {
apiHint:
"Get free API key at https://bazaarlink.ai — use model 'auto:free' for zero-cost inference. OpenAI-compatible.",
},
completions: {
id: "completions",
alias: "cpl",
name: "Completions.me",
icon: "bolt",
color: "#F59E0B",
textIcon: "CP",
website: "https://completions.me",
hasFree: true,
freeNote: "Free unlimited access to Claude, GPT, Gemini — no credit card, no rate limits",
apiHint: "Sign up at https://completions.me for free API key. OpenAI-compatible endpoint.",
},
xai: {
id: "xai",
alias: "xai",

View File

@@ -0,0 +1,26 @@
import test from "node:test";
import assert from "node:assert/strict";
import { REGISTRY } from "../../open-sse/config/providerRegistry.ts";
import { APIKEY_PROVIDERS } from "../../src/shared/constants/providers.ts";
import { FREE_MODEL_BUDGETS } from "../../open-sse/config/freeModelCatalog.data.ts";
// Regression guard for discussion #3293: "Completions.me" (provider id `completions`,
// alias `cpl`, https://completions.me) was a bundled preset advertising free unlimited
// access to premium models. It is a Rickroll endpoint -- verified empirically on
// 2026-06-06: a real key against /api/v1/chat/completions returns the Rick Astley
// lyrics ("Never gonna give you up...") for every model/prompt, with zeroed usage.
// It must stay out of every provider catalog so nobody wires it up by accident.
test("completions (Completions.me) provider is removed from the chat registry", () => {
assert.equal(REGISTRY["completions"], undefined);
});
test("completions (Completions.me) provider is removed from the API-key provider presets", () => {
assert.equal((APIKEY_PROVIDERS as Record<string, unknown>)["completions"], undefined);
});
test("completions (Completions.me) has no entries in the free model catalog", () => {
const offenders = FREE_MODEL_BUDGETS.filter((b) => b.provider === "completions");
assert.deepEqual(offenders, []);
});

View File

@@ -97,15 +97,15 @@ test("DefaultExecutor.buildUrl handles Gemini, Claude and Qwen variants", () =>
test("DefaultExecutor.buildUrl uses full chat endpoints for hosted OpenAI-compatible providers", () => {
const bazaarlink = new DefaultExecutor("bazaarlink");
const completions = new DefaultExecutor("completions");
const crof = new DefaultExecutor("crof");
assert.equal(
bazaarlink.buildUrl("auto:free", true),
"https://bazaarlink.ai/api/v1/chat/completions"
);
assert.equal(
completions.buildUrl("gpt-4.1", true),
"https://completions.me/api/v1/chat/completions"
crof.buildUrl("gpt-4.1", true),
"https://crof.ai/v1/chat/completions"
);
});