API Reference

One endpoint. Five frontier models. Billed in ₹. Aikipedia gives you direct access to Claude, Gemini, DeepSeek, Mistral, and Qwen through a single simple REST API — no dollar conversion, no subscriptions, no surprises.

Your user_id is your API key. Log in to see it below.

Echos -- Echos

Your API Key

Your user_id doubles as your API key. It is generated when you create your account.

Quickstart

1
Create an account
Register at aikipedia.in — it takes 30 seconds. No credit card needed.
2
Buy Echos (credits)
Top up with UPI or RuPay from ₹49. Credits last up to a year — no monthly lock-in.
3
Copy your API key
Log in and scroll to Your API Key below. Your user_id is your API key.
4
Make your first request
POST to https://backend.aikipedia.workers.dev/chat and ship something great.

Authentication

Aikipedia does not use bearer tokens or separate API keys. Instead, your user_id (shown after login) acts as your API key. Pass it in the JSON body as user_id on every request.

Keep your user_id private. Anyone with your user_id can consume your credits. You can reset it at any time from the Reset Key section.

Credits & Billing

Aikipedia uses a credit system called Echos. Each API call deducts a small amount based on the model and token count. There are no subscriptions — credits are valid for up to one year from purchase.

Top up via UPI, RuPay, or Visa cards starting at ₹49 — paid directly in rupees, zero forex charges.

Watch your balance on this page. Click the Echos badge at the top of this page to go to the payments page.

POST /chat

The single endpoint for all chat and vision requests.

POST https://backend.aikipedia.workers.dev/chat

Request Body

Parameter Type Required Description
user_id string Req Your API key (your user_id after login)
message string Req The user message to send to the model
model string Req Model identifier (see table below)
history array Req Conversation history. Pass [] for single-turn
systemPrompt string Req System instructions. Pass "" for default behavior
image_url string Opt Public image URL. Only for vision-capable models (Gemini Flash, Claude 3 Haiku)

All Models

Model ID (use in API) Type Vision
Claude 3 Haiku
Anthropic
anthropic/claude-3-haiku Text Yes
Gemini 2.5 Flash
Google
google/gemini-2.5-flash Vision Yes
DeepSeek V3
DeepSeek
deepseek/deepseek-chat-v3-0324 Text No
Codestral
Mistral
mistralai/codestral-2501 Text No
Qwen 2.5 Coder
Alibaba
qwen/qwen-2.5-coder-32b-instruct Text No

Text Models

Use text models for code generation, reasoning, writing, and conversation. image_url is not supported for these models.

curl -X POST https://backend.aikipedia.workers.dev/chat \
  -H 'Content-Type: application/json' \
  -d '{
    "user_id": "YOUR_USER_ID",
    "message": "Explain bubble sort in Python",
    "model": "qwen/qwen-2.5-coder-32b-instruct",
    "history": [],
    "systemPrompt": ""
  }'
import requests

response = requests.post(
    "https://backend.aikipedia.workers.dev/chat",
    json={
        "user_id": "YOUR_USER_ID",
        "message": "Explain bubble sort in Python",
        "model": "qwen/qwen-2.5-coder-32b-instruct",
        "history": [],
        "systemPrompt": ""   # Required; leave blank for default
    }
)
print(response.json())
const res = await fetch("https://backend.aikipedia.workers.dev/chat", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    user_id: "YOUR_USER_ID",
    message: "Explain bubble sort in Python",
    model: "qwen/qwen-2.5-coder-32b-instruct",
    history: [],
    systemPrompt: ""
  })
});
const data = await res.json();
console.log(data);
const axios = require("axios");

const { data } = await axios.post(
  "https://backend.aikipedia.workers.dev/chat",
  {
    user_id: "YOUR_USER_ID",
    message: "Explain bubble sort in Python",
    model: "qwen/qwen-2.5-coder-32b-instruct",
    history: [],
    systemPrompt: ""
  }
);
console.log(data);
package main

import (
  "bytes"
  "encoding/json"
  "fmt"
  "net/http"
)

func main() {
  body, _ := json.Marshal(map[string]interface{}{
    "user_id":      "YOUR_USER_ID",
    "message":      "Explain bubble sort in Python",
    "model":        "qwen/qwen-2.5-coder-32b-instruct",
    "history":      []string{},
    "systemPrompt": "",
  })
  resp, _ := http.Post(
    "https://backend.aikipedia.workers.dev/chat",
    "application/json",
    bytes.NewBuffer(body),
  )
  fmt.Println(resp.Status)
}
HttpClient client = HttpClient.newHttpClient();
String body = """
  {"user_id":"YOUR_USER_ID","message":"Explain bubble sort",
   "model":"qwen/qwen-2.5-coder-32b-instruct",
   "history":[],"systemPrompt":""}
  """;

HttpRequest req = HttpRequest.newBuilder()
  .uri(URI.create("https://backend.aikipedia.workers.dev/chat"))
  .header("Content-Type", "application/json")
  .POST(HttpRequest.BodyPublishers.ofString(body))
  .build();

HttpResponse<String> res = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
<?php
$payload = json_encode([
  "user_id"      => "YOUR_USER_ID",
  "message"      => "Explain bubble sort in Python",
  "model"        => "qwen/qwen-2.5-coder-32b-instruct",
  "history"      => [],
  "systemPrompt" => ""
]);
$ctx = stream_context_create([
  "http" => [
    "method"  => "POST",
    "header"  => "Content-Type: application/json\r\n",
    "content" => $payload,
  ]
]);
echo file_get_contents("https://backend.aikipedia.workers.dev/chat", false, $ctx);
require 'net/http'
require 'json'

uri = URI('https://backend.aikipedia.workers.dev/chat')
Net::HTTP.post(uri, {
  user_id: "YOUR_USER_ID",
  message: "Explain bubble sort in Python",
  model: "qwen/qwen-2.5-coder-32b-instruct",
  history: [],
  systemPrompt: ""
}.to_json, "Content-Type" => "application/json").tap { |r| puts r.body }
using System.Net.Http;
using System.Text;
using System.Text.Json;

var client = new HttpClient();
var payload = JsonSerializer.Serialize(new {
  user_id      = "YOUR_USER_ID",
  message      = "Explain bubble sort in Python",
  model        = "qwen/qwen-2.5-coder-32b-instruct",
  history      = Array.Empty<object>(),
  systemPrompt = ""
});
var res = await client.PostAsync(
  "https://backend.aikipedia.workers.dev/chat",
  new StringContent(payload, Encoding.UTF8, "application/json")
);
Console.WriteLine(await res.Content.ReadAsStringAsync());

Vision Models

Send images alongside text using image_url. Only Gemini 2.5 Flash and Claude 3 Haiku support vision. The image must be a publicly accessible URL.

curl -X POST https://backend.aikipedia.workers.dev/chat \
  -H 'Content-Type: application/json' \
  -d '{
    "user_id": "YOUR_USER_ID",
    "message": "What is in this image?",
    "model": "google/gemini-2.5-flash",
    "image_url": "https://your-public-image-url.com/photo.jpg",
    "history": [],
    "systemPrompt": ""
  }'
import requests

response = requests.post(
    "https://backend.aikipedia.workers.dev/chat",
    json={
        "user_id":      "YOUR_USER_ID",
        "message":      "What is in this image?",
        "model":        "google/gemini-2.5-flash",
        "image_url":    "https://your-public-image-url.com/photo.jpg",
        "history":      [],
        "systemPrompt": ""
    }
)
print(response.json())
const res = await fetch("https://backend.aikipedia.workers.dev/chat", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    user_id:      "YOUR_USER_ID",
    message:      "What is in this image?",
    model:        "google/gemini-2.5-flash",
    image_url:    "https://your-public-image-url.com/photo.jpg",
    history:      [],
    systemPrompt: ""
  })
});
console.log(await res.json());
const axios = require("axios");

const { data } = await axios.post(
  "https://backend.aikipedia.workers.dev/chat",
  {
    user_id:      "YOUR_USER_ID",
    message:      "What is in this image?",
    model:        "google/gemini-2.5-flash",
    image_url:    "https://your-public-image-url.com/photo.jpg",
    history:      [],
    systemPrompt: ""
  }
);
console.log(data);
package main

import (
  "bytes"
  "encoding/json"
  "fmt"
  "net/http"
)

func main() {
  body, _ := json.Marshal(map[string]interface{}{
    "user_id":      "YOUR_USER_ID",
    "message":      "What is in this image?",
    "model":        "google/gemini-2.5-flash",
    "image_url":    "https://your-public-image-url.com/photo.jpg",
    "history":      []string{},
    "systemPrompt": "",
  })
  resp, _ := http.Post(
    "https://backend.aikipedia.workers.dev/chat",
    "application/json",
    bytes.NewBuffer(body),
  )
  fmt.Println(resp.Status)
}
String body = """
  {"user_id":"YOUR_USER_ID","message":"What is in this image?",
   "model":"google/gemini-2.5-flash",
   "image_url":"https://your-public-image-url.com/photo.jpg",
   "history":[],"systemPrompt":""}
  """;
HttpRequest req = HttpRequest.newBuilder()
  .uri(URI.create("https://backend.aikipedia.workers.dev/chat"))
  .header("Content-Type","application/json")
  .POST(HttpRequest.BodyPublishers.ofString(body))
  .build();
System.out.println(HttpClient.newHttpClient()
  .send(req, HttpResponse.BodyHandlers.ofString()).body());
<?php
$payload = json_encode([
  "user_id"      => "YOUR_USER_ID",
  "message"      => "What is in this image?",
  "model"        => "google/gemini-2.5-flash",
  "image_url"    => "https://your-public-image-url.com/photo.jpg",
  "history"      => [],
  "systemPrompt" => ""
]);
$ctx = stream_context_create([
  "http" => ["method"=>"POST","header"=>"Content-Type: application/json\r\n","content"=>$payload]
]);
echo file_get_contents("https://backend.aikipedia.workers.dev/chat", false, $ctx);
require 'net/http'; require 'json'
uri = URI('https://backend.aikipedia.workers.dev/chat')
res = Net::HTTP.post(uri, {
  user_id: "YOUR_USER_ID", message: "What is in this image?",
  model: "google/gemini-2.5-flash",
  image_url: "https://your-public-image-url.com/photo.jpg",
  history: [], systemPrompt: ""
}.to_json, "Content-Type" => "application/json")
puts res.body
var payload = JsonSerializer.Serialize(new {
  user_id      = "YOUR_USER_ID",
  message      = "What is in this image?",
  model        = "google/gemini-2.5-flash",
  image_url    = "https://your-public-image-url.com/photo.jpg",
  history      = Array.Empty<object>(),
  systemPrompt = ""
});
var res = await new HttpClient().PostAsync(
  "https://backend.aikipedia.workers.dev/chat",
  new StringContent(payload, Encoding.UTF8, "application/json")
);
Console.WriteLine(await res.Content.ReadAsStringAsync());

Reset Key

If you believe your API key has been compromised, reset it below. Your old key will be immediately invalidated. All applications using the old key will need to be updated.