> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sinancode.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Get started with SinanCode API in 5 minutes

## Step 1: Get Your API Key

Visit the [API Keys Management Page](https://sinancode.com/dashboard/keys) to create your API key.

1. Log in to your SinanCode account
2. Navigate to Dashboard → API Keys
3. Click "Create New Key"
4. Save the generated API Key (keep it secure, it's only shown once)

## Step 2: Make an API Request

All API requests require authentication in the HTTP Header:

```bash theme={null}
Authorization: Bearer YOUR_API_KEY
```

### Basic Request Example

Here's a complete example of generating an image using Imagen4:

```bash theme={null}
curl -X POST https://api.sinancode.com/v1/generate/k/imagen4 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "a beautiful sunset over the mountains",
    "aspect_ratio": "16:9",
    "num_images": 1
  }'
```

**Response Example:**

```json theme={null}
{
  "task_id": "01234567-89ab-cdef-0123-456789abcdef"
}
```

## Step 3: Check Task Status

Since AI model generation takes time, most APIs work asynchronously. Use the returned `task_id` to check the task status:

```bash theme={null}
curl -X GET https://api.sinancode.com/v1/tasks/01234567-89ab-cdef-0123-456789abcdef \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Response Example:**

```json theme={null}
{
  "id": "01234567-89ab-cdef-0123-456789abcdef",
  "status": "completed",
  "result": [
    "https://storage.example.com/generated-image.jpg"
  ]
}
```

### Task Status Descriptions

* `pending` - Task is queued
* `processing` - Generation in progress
* `completed` - Generation completed
* `failed` - Generation failed

## Popular Models Quick Reference

### Image Generation Models

#### Imagen 4

* **Endpoint**: `POST /generate/k/imagen4`
* **Features**: Google's latest image generation model with excellent quality
* **Parameters**: `prompt`, `aspect_ratio`, `num_images`, `seed`

#### Midjourney

* **Endpoint**: `POST /generate/k/midjourney-txt2img`
* **Features**: Strong artistic style, ideal for creative design
* **Parameters**: `prompt`, `aspectRatio`, `version`, `stylization`

#### Flux Kontext

* **Endpoint**: `POST /generate/k/flux-kontext`
* **Features**: Supports Chinese prompts with automatic translation
* **Parameters**: `prompt`, `aspect_ratio`, `model`, `enable_translation`

### Video Generation Models

#### Sora 2

* **Endpoint**: `POST /generate/k/sora2-text-to-video`
* **Features**: OpenAI's video generation model
* **Parameters**: `prompt`, `aspect_ratio`, `n_frames`

#### Veo 3

* **Endpoint**: `POST /generate/k/veo3-text-to-video`
* **Features**: Google's video generation model with image-to-video support
* **Parameters**: `prompt`, `aspectRatio`, `model`

## Complete Code Examples

### Python Example

```python theme={null}
import requests
import time

API_KEY = "your_api_key_here"
BASE_URL = "https://api.sinancode.com/v1"

# Create task
response = requests.post(
    f"{BASE_URL}/generate/k/imagen4",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "a futuristic cityscape at sunset",
        "aspect_ratio": "16:9",
        "num_images": 1
    }
)

task_id = response.json()["task_id"]
print(f"Task created successfully, ID: {task_id}")

# Poll task status
while True:
    status_response = requests.get(
        f"{BASE_URL}/tasks/{task_id}",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )

    task = status_response.json()
    status = task["status"]

    print(f"Task status: {status}")

    if status == "completed":
        print(f"Generation completed! Image URL: {task['result'][0]}")
        break
    elif status == "failed":
        print(f"Generation failed: {task.get('error_msg', 'Unknown error')}")
        break

    time.sleep(2)  # Wait 2 seconds before retrying
```

### JavaScript/TypeScript Example

```javascript theme={null}
const API_KEY = "your_api_key_here";
const BASE_URL = "https://api.sinancode.com/v1";

async function generateImage() {
  // Create task
  const createResponse = await fetch(`${BASE_URL}/generate/k/imagen4`, {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${API_KEY}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      prompt: "a serene mountain landscape",
      aspect_ratio: "16:9",
      num_images: 1
    })
  });

  const { task_id } = await createResponse.json();
  console.log(`Task created successfully, ID: ${task_id}`);

  // Poll task status
  while (true) {
    const statusResponse = await fetch(`${BASE_URL}/tasks/${task_id}`, {
      headers: { "Authorization": `Bearer ${API_KEY}` }
    });

    const task = await statusResponse.json();
    console.log(`Task status: ${task.status}`);

    if (task.status === "completed") {
      console.log(`Generation completed! Image URL: ${task.result[0]}`);
      break;
    } else if (task.status === "failed") {
      console.log(`Generation failed: ${task.error_msg}`);
      break;
    }

    await new Promise(resolve => setTimeout(resolve, 2000)); // Wait 2 seconds
  }
}

generateImage();
```

## Next Steps

* 📖 [View Full API Documentation](/en/api-reference/introduction) - Learn about all available models and parameters

## Frequently Asked Questions

### How do I choose the right model?

* **For Quality**: Imagen 4 Ultra, Midjourney v7
* **For Speed**: Imagen 4 Fast, Nano Banana
* **For Chinese Prompts**: Flux Kontext, Tongyi Wanxiang
* **For Video Generation**: Sora 2 Pro, Veo 3

### What are the rate limits?

Each API Key has rate limits depending on your subscription plan. When limits are exceeded, you'll receive a `429 Too Many Requests` error.

Need help? Visit [sinancode.com](https://sinancode.com) to contact our technical support team.
