50,000 requests in one upload. /v1/batches, shaped exactly like OpenAI's.
Evals, labeling runs, backfills, agent-scale replay. Upload a JSONL of chat requests with purpose="batch", create a batch, and collect the output file when it completes. No concurrency shims, no queue babysitting, no premium for being quiet about it. Same base URL, same key, same rate card as interactive.
Two calls in, one file out.
Every line is one POST /v1/chat/completions call with a custom_id. The batch walks the same live lanes interactive traffic uses, complete and failed counts update in real time, and the finished job carries output_file_id you download with GET /v1/files/{id}/content. Failed lines land in a separate error file, so a 400 on line 1 does not burn line 49,999.
- 01 Upload input with POST /v1/files, purpose="batch".
- 02 Create the batch with input_file_id and completion_window="24h".
- 03 Poll GET /v1/batches/{id} until status is completed.
- 04 Download output_file_id, parse the JSONL, done.
import openai client = openai.OpenAI( base_url="https://api.fikraapi.co.ke/v1", api_key="your_fikra_key" ) f = client.files.create( file=open("requests.jsonl", "rb"), purpose="batch" ) b = client.batches.create( input_file_id=f.id, endpoint="/v1/chat/completions", completion_window="24h" ) print(b.id, b.status)
| Model | Input $/1M | Output $/1M | Cached input $/1M | Context |
|---|---|---|---|---|
| deepseek-v4.1-flash | $0.05 | $0.11 | $0.025 | 1.0M |
| deepseek-v4.1-flash-1017 | $0.05 | $0.11 | $0.025 | 1.0M |
| deepseek-v4-flash-0731 | $0.045 | $0.17 | $0.025 | 1.0M |
| glm-5.3-flash | $0.155 | $0.49 | $0.08 | 0.3125M |
| kimi-k3 | $2.1 | $10.5 | $0.6 | 1.0615M |
| step-5-preview | $1.25 | $3.3 | automatic | 1.0M |
| mimo-v2.6-pro | $0.5 | $1 | $0.012 | 1.0M |
| glm-5.3 | $1.05 | $3.35 | $0.55 | 0.3125M |
| gemini-4-argon | $2.5 | $12 | automatic | 1.0M |
| nvidia-nemotron-3.5-super-vl | $0.5 | $1.25 | automatic | 1.0M |
| qwen3.8-27b | $0.045 | $0.35 | $0.1 | 0.9551M |
| glm-5.2 | $0.75 | $1.65 | $0.55 | 0.25M |
| fikra-pro-20b | $0.2 | $0.2 | automatic | 0.125M |
| fikra-pro-120b | $0.3 | $0.3 | automatic | 0.125M |
| fikra-qwen-27b | $0.045 | $0.35 | automatic | 0.25M |
| fikra-qwen-max | $6 | $12 | automatic | 1.0M |
| fikra-auto | $0.045 | $0.35 | automatic | 0.25M |
| fikra-auto-pro | $6 | $12 | automatic | 1.0M |
| fikra-code-35b | $0.045 | $0.33 | automatic | 0.25M |
Batch traffic bills at the same rates as interactive, straight off the live catalog. Machine-readable rates: pricing.md.
Clear limits, no contract talk.
If you need guaranteed capacity or a contract rate for 500M+ tokens per day, the volume tier is coming. Everything below is live today.
SIZE
50,000 request lines and 200 MB per input file. Batches can run concurrently with each other and with your interactive traffic.
WINDOW
completion_window is 24h. Most batches finish hours early. request_counts tracks completed and failed lines while the batch runs.
CONTROL
Transient upstream failures retry up to 3 attempts automatically. Cancel works before the batch reaches a terminal state, unbilled lines stop where they are.
Point the SDK at Fikra, upload the file.
One base URL, same rate card, batch included.
Get an API key →