The differentiator

Your AI, or ours

Whoever pays for the generation should choose who generates. That is the whole premise of this page — and the only reason EverFeed was built instead of subscribed to.

The premise

In tools in this category, the model is whatever the tool decided, in whatever version it decided, and you find out it changed when the pieces start looking different. If you already have an account with OpenAI, Google or any other provider, the credit you already pay for is worth nothing in there.

In EverFeed, an AI provider is a record. Name, capability (text, image or video), driver, base URL, key, default model, list of models, a free-form params field in JSON, timeout, “is the default”, enabled or disabled. The pipeline reads that record and obeys — it does not know, and does not need to know, who is on the other side.

Three capabilities

One piece, up to three vendors

Each pipeline step asks for a capability, and each capability has its own default provider. Text from one, images from another, video from a third — and your key in all of them, if you want.

text OpenAIDeepSeekGroqGeminiOpenRouterOllamavLLM+ yours
image GeminiOpenAIDashScope / Wan+ yours
video VeoWan (t2v, i2v, ref2v)+ yours

The list above is examples, not a closed set of integrations: what defines support is the driver, not the vendor name.

The five drivers

What each driver is for

DriverCapabilitiesWhat it is for
openai_compatibletextAny API in the OpenAI format — OpenAI, DeepSeek, Groq, OpenRouter, Ollama, vLLM and anything else that speaks that dialect.
geminitext, imageGoogle Gemini.
veovideoGoogle Veo.
dashscopeimage, videoAlibaba Model Studio — the Wan family: text→video, image→video, reference→video and editing.
customtext, image, videoDescribes an entire API in JSON. If your vendor is not on the list, it goes in without waiting for us.

params

The params field is raw JSON on purpose — It is where vendor-specific settings travel, without waiting for us to add a field to a screen: temperature, max_tokens, size, aspect_ratio, duration_seconds, negative_prompt, extra_headers, extra_body.

The custom driver

An entire API described in JSON

This is the definitive “any AI” argument. Anyone with an internal endpoint — a model running on their own infrastructure, a corporate gateway, a regional vendor — plugs in without waiting for a release from us. The block below is fictional and only shows the shape.

driver: custom
{
  "auth":  { "type": "bearer", "header": "Authorization" },
  "text":  {
    "method": "POST",
    "path":   "/v1/chat",
    "body":   { "model": "{{model}}", "input": "{{prompt}}" },
    "pick":   "output.text"
  },
  "image": {
    "method": "POST",
    "path":   "/v1/render",
    "body":   { "prompt": "{{prompt}}", "size": "{{size}}" },
    "pick":   "data[0].url"
  },
  "video": {
    "method":  "POST",
    "path":    "/v1/clip",
    "body":    { "prompt": "{{prompt}}", "seconds": "{{duration_seconds}}" },
    "poll":    { "path": "/v1/clip/{{id}}", "until": "status == 'done'" },
    "pick":    "result.url"
  },
  "health": { "method": "GET", "path": "/v1/models" }
}

Audit trail

Nothing is a black box

If you cannot see what was sent, you are not configuring anything — you are hoping. Every step of every piece stores:

prompt_sent

The exact prompt that left here, after being assembled with the variables and the company kit.

provider · model

Which provider and which model served that step. Not “the AI”: the name and the version.

attempts · duration

How many attempts it took and how long it ran.

takes

Up to ten previous versions of the file. Regenerating does not delete; you can compare two takes without paying for another generation.

A health test per provider

One button per provider fires a real call and shows the answer. When it fails, EverFeed returns the raw message from the vendor, not a “generation error”. That is the difference between knowing the key expired, the model does not exist or the account hit its quota — and guessing.

The key does not come back

The AI key is stored encrypted and the API never returns it: the panel receives sk-…4f2a and nothing more. Channel credentials come back only as field names. A Meta or TikTok app secret comes back only as “it exists”, and stays encrypted in the database — not in a .env file on the server. This is not a marketing promise: it is the shape of the JSON our own interface receives.

The two paths, side by side

Your key (BYOK)EverFeed credits
SetupYou create the account at the vendor and paste the keyYou configure nothing
Who charges for generationThe vendor, directly, at their priceUs, in credit bought separately
Model choiceSwitch whenever you like, per capabilityWe pick a good default
PriceThe option comes with the plan; generation you pay the vendorCredit bought separately from the plan
Can I change later?Yes — start on credits and plug your key inYes — unplug the key and go back to credits

Plug in the AI you already pay for.

Or plug in nothing and use our keys. Both doors exist, and changing your mind later costs nothing.