Run LLMs, embeddings, images, speech, OCR, translation, web scraping and 500+ other AI models from many providers through Eden AI's single API.
Eden AI ships in the w6w first-party pack. It declares 30 actions, 2 health checks, and the host runs its code in a sandbox that never sees the credential.
io.w6w.edenaiEden AI is an AI gateway: one API key and one request shape reach 500+ models from 50+ providers, with provider fallback, routing and per-call cost reporting built in. This app covers the V3 API in two halves.
The LLM half is OpenAI-compatible: chat completions, the stateful Responses API, embeddings, content moderation, image generation, text-to-speech and video generation. Name a model as provider/model to pin a vendor, or give a bare model name and let Eden AI route by price, speed or latency.
The Universal AI half runs the non-LLM “expert models” - translation, OCR, resume parsing, entity extraction, AI-text detection, PII anonymization, web search and scraping - by naming a feature/subfeature/provider and swapping providers without changing the workflow. Long-running features (multipage OCR, speech-to-text, crawling, deep research) are a start action plus a job-status action. A generic Universal AI action and feature-discovery actions reach every other expert model.
Three routes to the same 30 actions. The Workflow tab is generated from Eden AI's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.
async-job-get Get the status and, once finished, the output of an async Universal AI job.
async-job-list List your async Universal AI jobs, optionally filtered by feature or status.
async-job-start Start any long-running expert-model job by name, for example web/crawl_async or ocr/ocr_tables_async. Read the result with Get Async Job.
chat-completion Send a prompt (or a full message list) to any LLM and get the model's reply.
entities-extract Find people, places, organizations and other named entities in text.
feature-get Get an expert-model feature's input fields, output schema, providers with pricing, and accepted provider parameters.
features-list List the Universal AI features (text, ocr, image, translation, audio, web, video), their subfeatures, whether each is sync or async, and the models that serve them.
file-list List files uploaded to Eden AI. A file id can be used as an input to OCR and other expert models.
models-list List the LLM models available through Eden AI, with context length, modalities and token pricing.
moderation-create Classify text for harmful content (violence, hate, self-harm, sexual content).
ocr-extract Read text from an image or single-page PDF with a chosen OCR provider.
ocr-multipage-start Extract text, lines and word positions from a multipage PDF or image. Starts an async job; read the result with Get Async Job.
response-create Create a model response with the stateful Responses API; continue a conversation by passing the previous response ID.
speech-create Synthesize spoken audio from text. The audio is returned base64-encoded.
speech-to-text-start Transcribe an audio file, with optional speaker diarization. Starts an async job; read the result with Get Async Job.
text-ai-detect Estimate whether text was written by an AI chatbot or language model.
text-anonymize Detect personal information in text and return it with the personal data redacted.
translate-text Translate text into another language with a chosen translation provider.
universal-ai-run Run any synchronous non-LLM feature by name. Use Get Feature Info to see a feature's input fields and providers.
video-delete Delete a finished video generation job. A job still in progress cannot be deleted.
web-scrape Fetch one URL and return its content as text, with title, links and images.
web-search Search the web for a query and return ranked results, optionally with a synthesized answer.
A workflow step names the app and the action, and the editor fills in the
connection when you pick one. This is the Step shape from the
workflow spec, carrying Eden AI's real ids.
{
"manifestVersion": "2",
"name": "edenai-example",
"steps": [
{
"id": "async-job-get",
"uses": {
"app": "io.w6w.edenai",
"action": "async-job-get",
"connection": "conn_YOUR_CONNECTION_ID"
},
"with": {
"jobId": "<jobId>"
}
}
]
}async-job-get async-job-list async-job-start chat-completion embeddings-create +25 more actions available
Every app-specific value here is a blank you have to fill in. An
app action is reached through the connection that authenticates it, so the
address is a connection id, not the app id — and connections belong to your account,
so a public page cannot know yours. Create one for Eden AI, then fill in
the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the
parameters that action declares. The call itself is real — the shape is transcribed
from the studio's own snippet builder, which prints the same kind of blanks — but
nothing in it is specific to Eden AI. The Workflow tab is where this app's
real ids are.
npm install @w6w/sdkyarn add @w6w/sdkpnpm add @w6w/sdkdeno add npm:@w6w/sdkimport { W6wClient, isActionRun } from "@w6w/sdk";
// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();
const envelope = await client.run({
urn: "conn_YOUR_CONNECTION_ID",
action: "async-job-get",
payload: {
jobId: "<value>",
// compact: "<value>",
},
});
if (isActionRun(envelope)) console.log(envelope.value); npm install -g @w6w/cli w6w run conn_YOUR_CONNECTION_ID --action async-job-get --payload '{"jobId":"<value>"}' Give an AI agent Eden AI — without giving it Eden AI's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.
One tool call{
"name": "w6w_invoke",
"arguments": {
"ref": "app:io.w6w.edenai#async-job-get",
"input": {
"jobId": "<jobId>"
}
}
}
Every tool names its target with a single ref. The
app: form above doesn't name a connection at all — the
host resolves which of the caller's Eden AI connections to sign
with, and refuses rather than guesses when the answer is ambiguous.
The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.
Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.
Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.
Eden AI's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.
The MCP surface is part of the hosted platform. Eden AI itself is MIT, and the runtime that executes it is source-available (FSL).
Eden AI declares its own checks, so its health is a property of the app rather than something the host guesses at.
Page-level status from app-edenai.instatus.com (Instatus).