---
title: شروع سریع
description: از صفر تا نخستین پاسخ موفق API دانا در سه قدم، با نمونه curl و Python و Node.js
---

سه قدم تا نخستین پاسخ: کلید بسازید، در متغیر محیطی بگذارید، درخواست بفرستید.

## ۱. کلید API بسازید

در [کنسول دانا](https://console.dana.expert/keys) روی ساخت کلید بزنید و نامی بگذارید که بعدا بشناسیدش. کلید با `dn-live-` شروع می‌شود و **فقط همان یک بار** کامل نشان داده می‌شود، پس همان‌جا کپی کنید.

## ۲. کلید را در محیط بگذارید

```bash
export DANA_API_KEY="dn-live-..."
```

## ۳. درخواست بفرستید

**curl:**

```bash
curl https://api.dana.expert/v1/chat/completions \
  -H "Authorization: Bearer $DANA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"dana-1","messages":[{"role":"user","content":"سلام دانا!"}]}'
```

**Python (openai SDK):**

```python
import os

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DANA_API_KEY"],
    base_url="https://api.dana.expert/v1",
)

response = client.chat.completions.create(
    model="dana-1",
    messages=[{"role": "user", "content": "سلام دانا!"}],
)
print(response.choices[0].message.content)
```

**Node.js (openai SDK):**

```js
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.DANA_API_KEY,
  baseURL: "https://api.dana.expert/v1",
});

const response = await client.chat.completions.create({
  model: "dana-1",
  messages: [{ role: "user", content: "سلام دانا!" }],
});
console.log(response.choices[0].message.content);
```

## پاسخ موفق

```json
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "model": "dana-1",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "سلام! چطور می‌توانم کمکتان کنم؟"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 8,
    "completion_tokens": 14,
    "total_tokens": 22
  }
}
```

## اگر جواب نگرفتید

| کدی که دیدید | معنایش | کار بعدی |
|---|---|---|
| `401` | کلید نرسید یا شناخته نشد | ببینید `$DANA_API_KEY` واقعا مقدار دارد و فاصله اضافه ندارد |
| `429` | نرخ، ظرفیت، سقف توکن یا اعتبار | فیلد `type` را بخوانید؛ چهار علت جدا دارد |
| `503` با `code` برابر `coming_soon` | سرویس‌دهی مدل هنوز روشن نشده | صبر کنید؛ تلاش مجدد جواب را عوض نمی‌کند |

فهرست کامل کدها و راه‌حل هرکدام در [خطاها](/docs/errors) آمده است.

دو نکته که بیشتر از همه وقت می‌گیرند:

- برای رابط OpenAI مقدار `base_url` باید `/v1` داشته باشد. برای رابط Anthropic نباید داشته باشد.
- هدر درست `Authorization: Bearer <key>` است. کلید خالی و بدون `Bearer` همان `401` را می‌دهد.

## قدم بعدی

- [احراز هویت](/docs/authentication) - کلید `live` و `test` و نگهداری امن آن‌ها
- [Chat Completions](/docs/chat-completions) - همه پارامترها و streaming
- [Messages](/docs/messages) - رابط Anthropic و شمارش توکن
- [محدودیت‌ها](/docs/rate-limits) - سقف نرخ و مدیریت `429`
