Text chat (RAG)
Question → embedding → vector search filtered by project_id → top-k chunks → LLM → answer with sources. One endpoint: POST /v1/chat.
Upload a PDF or URL, get a pk_xxx key, and your chatbot is live on your site in under 5 minutes.
A live tour of the dashboard. Switch tabs to walk through the pages.
Built on the best
If you wanted to build an AI chatbot today that answers from your documents, you'd wire up OpenAI for the LLM, Pinecone for vectors, ElevenLabs for voice, and Firecrawl for websites. Weeks of work. Five keys to babysit.
1KeyAI collapses that into one endpoint. Create a project, upload a PDF or URL, get a pk_xxx key, and POST to /v1/chat from your site. Behind the key: embeddings (text-embedding-3-small), pgvector isolated with Row Level Security, and an LLM router across Claude, GPT, and Gemini.
Goal: from signup to a working chatbot in under 5 minutes. API-first — we don't impose a UI or ship a widget. You decide what the visitor sees; we keep the brain.
One endpoint loads your docs. Another returns answers with sources. Five AI services run on our side, not yours.
Sign up and create a project — get your pk_xxx key instantly, with a one-click copy.
Upload a PDF or paste a URL. We extract text, chunk it, generate embeddings (1536) and store in Supabase.
Chat with your bot right inside the dashboard. See the sources behind every answer.
Paste the code into your site. One POST /v1/chat. The bot works — text or voice.
You don't touch embeddings, vector DBs, STT/TTS, or LLM routing. We hide them all behind a single endpoint.
Question → embedding → vector search filtered by project_id → top-k chunks → LLM → answer with sources. One endpoint: POST /v1/chat.
ElevenLabs hears and speaks. Our backend keeps the brain — RAG + LLM. Same docs, no double setup.
POST /v1/image with a prompt. Router across OpenAI, Flux, and Stability — the keys live on our side.
Upload a PDF (pypdf) or paste a URL (Firecrawl). Same embeddings, same hierarchy: documents → chunks.
One dropdown. Same docs. Default: claude-sonnet. Switch with one request parameter.
Google Veo / Runway / Sora after the hackathon — async with job_id + polling/webhook. Same pattern as image.
FastAPI generates OpenAPI automatically. Scalar turns it into beautiful docs with copy-ready code samples — your key pre-filled. Coming: Fern-generated SDKs for JS, Python, and PHP.
const r = await fetch("https://api.1keyai.org/v1/chat", {
method: "POST",
headers: {
Authorization: "Bearer pk_live_••••",
"Content-Type": "application/json",
},
body: JSON.stringify({ message, llm: "claude" }),
});
const { answer, sources } = await r.json();One database, two layers of defense. No developer can ever see another's data — not even by mistake.
POST /v1/chatAuthorization: pk_xxxpk_xxx→ resolve project_idmatch_chunks(project_id, q)— filter inside queryVector search always filters inside the query — not after. No chunk from another project ever reaches the LLM.
Supabase RLS enforces isolation at the database layer. Even if the code slips, the DB itself blocks cross-project leaks.
OpenAI, Anthropic, Firecrawl, ElevenLabs — all live on the backend. The frontend never touches them.
select c.id, c.content, d.source from chunks c join documents d on d.id = c.document_id where c.project_id = p_project_id -- isolation happens here order by c.embedding <=> query_embedding limit match_count;
No, by design. We're API-first — we give you the power, not the look. Every site has its own style; developers build the UI to match. A lightweight SDK is coming, not a styled widget.
Two layers: vector search filters by project_id inside the query (not after), and Supabase RLS enforces isolation at the database layer. Even if the code slips, the DB blocks cross-project leaks.
Default: Claude (claude-sonnet). Dropdown also covers GPT, with Gemini optional. Switch with one request parameter — same docs, no reconfig.
Under 5 minutes from signup to a working chatbot. No mandatory config — defaults just work. The code snippet ships with your key pre-filled.
Not in the MVP. After the hackathon: BYOK for enterprise, plus per-user API keys (every user gets their own key with the provider — no rate-limit bottleneck).
Roadmap after the hackathon. Providers slot into the router (Google Veo / Runway / Sora) with the same pattern as image. Async (job_id + polling/webhook) because it takes 30s–several minutes.
Free to start. No card. No setup. Just a key and your documents.