Quickstart: your first request
Gisoo speaks the OpenAI API. If your code already works with an OpenAI-compatible client, you change two values, the base URL and the key, and you can call models from many providers with the same code.
1. Sign in and get an API key
- Sign in at gisoo.pro. From outside Iran, choose Sign in with a NetArz account: you receive a one-time code by email.
- Open gisoo.pro/app/api and create a key. It looks like
sk-gisoo-v1-...and is shown once; store it as a secret, never in client-side code.
2. Add credit
There is no subscription. You buy prepaid credit, held in US dollars, at gisoo.pro/app/credit. Top-ups are currently paid with an Iranian bank card on the NetArz payment page; NetArz is the seller and issues the receipt. The same balance is shared between your Gisoo and NetArz accounts.
Until your identity is verified at gisoo.pro/app/kyc, an account can spend up to $2. After that limit the API answers with the error code kyc_required.
3. Send your first request
The base URL is https://gisoo.pro/api/v1 and every request carries Authorization: Bearer YOUR_KEY.
curl https://gisoo.pro/api/v1/chat/completions \
-H "Authorization: Bearer $GISOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}'
from openai import OpenAI
client = OpenAI(base_url="https://gisoo.pro/api/v1", api_key="sk-gisoo-v1-...")
reply = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Say hello in one sentence."}],
)
print(reply.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://gisoo.pro/api/v1", apiKey: process.env.GISOO_API_KEY });
const reply = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [{ role: "user", content: "Say hello in one sentence." }],
});
console.log(reply.choices[0].message.content);
The response is the standard OpenAI chat-completion object: choices[0].message.content holds the answer and usage the tokens that were billed.
4. Stream the answer
Set "stream": true and read server-sent events, exactly as with the OpenAI API. The last event is data: [DONE].
curl https://gisoo.pro/api/v1/chat/completions \
-H "Authorization: Bearer $GISOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o-mini", "stream": true,
"messages": [{"role": "user", "content": "Count to five."}]}'
5. Pick another model
Change only the model string. The live list, with context window, capabilities and prices, is on Models and prices; you can also call GET https://gisoo.pro/api/v1/models without a key.
Errors you may meet
| Code | Meaning |
|---|---|
missing_api_key | No Authorization header was sent. |
invalid_api_key | The key is wrong or has been revoked. |
insufficient_credit | The balance cannot cover the hold for this request. Add credit. |
kyc_required | The unverified-account limit of $2 was reached. |
model_not_found | The model id does not exist or is not on sale. Check the models list. |
Requests that fail with an authentication, credit, limit or bad-request error are not billed. See Pricing and billing for how holds work.
Next steps
- Capabilities: images, speech, video, embeddings, tools and more.
- SDKs and tools: OpenAI and Anthropic SDKs, Claude Code, LangChain, n8n, Cursor.
- OpenAPI specification (JSON).
The detailed reference is currently written in Persian: راهنمای شروع سریع. Code samples and field names are the same.