Skip to main content

Step 1: Get Your API Key

Visit the API Keys Management Page 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:
Authorization: Bearer YOUR_API_KEY

Basic Request Example

Here’s a complete example of generating an image using Imagen4:
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:
{
  "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:
curl -X GET https://api.sinancode.com/v1/tasks/01234567-89ab-cdef-0123-456789abcdef \
  -H "Authorization: Bearer YOUR_API_KEY"
Response Example:
{
  "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

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

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

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 - Learn about all available models and parameters
  • 💰 Check Credit Usage - Use the /calculate-credits/{model} endpoint to estimate costs
  • 🔔 Configure Webhooks - Get automatic notifications when tasks complete

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.

How do I calculate credit usage?

Use the credit calculation API:
curl -X POST https://api.sinancode.com/v1/calculate-credits/k/imagen4 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"num_images": 2}'
Need help? Visit sinancode.com to contact our technical support team.