Reka Edge API: toman pricing and code

rekaai/reka-edge

Image inputTool callingJSON output
Input · per 1M tokens
34,622 toman
Output · per 1M tokens
34,622 toman
One 1,000-word request ≈
90 toman

You are billed for the usage the request actually reported. Prices follow the market.Pricing and top-ups

Reka Edge example: reading an image into JSON

The example is picked from this model's own capabilities. Drop in your key and it runs as is.

# tip: a data URI works too — base64 the file and prefix it with data:image/jpeg;base64,
curl https://api.uttapen.ir/v1/chat/completions \
  -H "Authorization: Bearer sk-up-…" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "rekaai/reka-edge",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "Return only the invoice number and the total, as JSON."},
        {"type": "image_url", "image_url": {"url": "https://example.com/factor.jpg"}}
      ]
    }]
  }'
import base64, json
from openai import OpenAI

client = OpenAI(base_url="https://api.uttapen.ir/v1", api_key="sk-up-…")

img = base64.b64encode(open("factor.jpg", "rb").read()).decode()

resp = client.chat.completions.create(
    model="rekaai/reka-edge",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Return the invoice number, the date and the total as JSON."},
            {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img}"}},
        ],
    }],
    response_format={"type": "json_object"},
)
print(json.loads(resp.choices[0].message.content))
import OpenAI from "openai";
import { readFileSync } from "node:fs";

const client = new OpenAI({ baseURL: "https://api.uttapen.ir/v1", apiKey: "sk-up-…" });
const img = readFileSync("factor.jpg").toString("base64");

const resp = await client.chat.completions.create({
  model: "rekaai/reka-edge",
  messages: [{
    role: "user",
    content: [
      { type: "text", text: "Return the invoice number, the date and the total as JSON." },
      { type: "image_url", image_url: { url: `data:image/jpeg;base64,${img}` } },
    ],
  }],
  response_format: { type: "json_object" },
});
console.log(JSON.parse(resp.choices[0].message.content));

What is Reka Edge good for?

Reka Edge comes from Reka; in uttapen you reach it with the model id "rekaai/reka-edge". It accepts up to 16,384 tokens of input per call, so a long document or several source files fit in a single request. A single response can run to 14,745 tokens. On price it sits in the "very cheap" band — cheaper than 383 and dearer than 12 of the other paid models in the catalogue.

What it can do beyond plain text: it reads images directly, which makes it a real option for invoices, forms and screenshots; it supports tool calling, so it can invoke your own functions with valid arguments; it returns schema-valid JSON through response_format, ready to hand to your code. All of it works through the standard parameters of the official OpenAI SDK — no custom client, no wrapper.

Pricing is 34,622 toman per 1M input tokens and 34,622 per 1M output tokens. A 1,000-word round trip on Reka Edge lands near 90 toman. You are always charged for the usage the request actually reported, never for the estimate, and a failed request costs nothing.

The closest alternative with the same capabilities from a different provider is Ministral 3 3B 2512, and Reka Edge costs about the same, and its context window is smaller. Both run on the same key and the same code, so trying the other one is a single string change.

To make the figure concrete: 100,000 toman of credit buys roughly 1,111 thousand-word requests on Reka Edge, and every 1,000 toman is about 11,111 words of round trip. A job with one million input tokens and one million output tokens comes to 69,244 toman in total. Filling this model's 16,384-token window costs 567 toman on the input side alone, which is the real reason to keep conversation history short.

Reka has 2 models in our catalogue; the cheapest is Reka Edge at 90 toman per thousand words and the dearest Reka Flash 3 at 135. Among the less common parameters it accepts logprobs, presence_penalty, top_k, top_logprobs — all through the standard request body. It does not support include_reasoning, reasoning, response_format, which most models here do, so test before switching if your code relies on them. By context size the nearest option from another provider is Phi 4 at 16,384 tokens.

Good fits: high-volume work such as classification, tagging and bulk summarising, pulling text and fields out of images, agents that reach out to APIs and databases, extracting data against a fixed schema.

Provider's own description

Reka Edge is an extremely efficient 7B multimodal vision-language model that accepts image/video+text inputs and generates text outputs. This model is optimized specifically to deliver industry-leading performance in image understanding,...

Three real jobs, priced on this model

Each figure is derived from the prices above and moves when they do.

JobTokensCost
One chat turn with a medium history1,500 in + 400 out66 toman
Summarising a ten-page document4,000 in + 600 out159 toman
Classifying a thousand short rows120,000 in + 20,000 out4,847 toman

Frequently asked

How do I call Reka Edge from Iran?
Sign up with your mobile number, top the wallet up in toman, create an API key, then in the official OpenAI SDK point base_url at https://api.uttapen.ir/v1 and set model to "rekaai/reka-edge". Nothing else in your code changes.
What does Reka Edge cost in toman?
34,622 toman per 1M input tokens and 34,622 toman per 1M output tokens; a 1,000-word request is around 90 toman. You pay for the usage that request actually reported, and a failed request costs nothing.
How much input does Reka Edge take?
Up to 16,384 tokens per request, roughly 12k words. A single answer can reach 14,745 tokens.
Does Reka Edge support streaming and tool calling?
Streaming (stream=true) works on every model here. This one supports tool calling in the standard OpenAI shape. Image input is accepted through image_url, as a data URI or a public URL. Structured output through response_format works too.