ungurenko

kie-ai

0
0
# Install this skill:
npx skills add ungurenko/claude-config --skill "kie-ai"

Install specific skill from multi-skill repository

# Description

Use when integrating with Kie.ai API for image/video/music generation, writing async task-based code with polling, or when user mentions kie, seedream, veo, suno, runway, kling, hailuo, flux

# SKILL.md


name: kie-ai
description: Use when integrating with Kie.ai API for image/video/music generation, writing async task-based code with polling, or when user mentions kie, seedream, veo, suno, runway, kling, hailuo, flux


Kie.ai API Reference

Overview

Kie.ai — агрегатор AI-моделей для генерации изображений, видео и музыки. НЕ OpenAI-совместимый — асинхронный REST API с polling/webhook.

Quick Reference

Parameter Value
Base URL https://api.kie.ai
Auth Header Authorization: Bearer API_KEY
Model Format provider/model (e.g., bytedance/seedream)
Pricing 1 credit ≈ $0.005

Endpoints

Endpoint Method Purpose
/api/v1/jobs/createTask POST Create generation task
/api/v1/jobs/recordInfo?taskId=X GET Query task status
/api/v1/chat/credit GET Check credits
/api/v1/common/download-url POST Get temp download URL

Async Workflow

createTask → taskId → poll recordInfo → state: success → parse resultJson

Task States: waitingqueuinggeneratingsuccess | fail

Code Example (TypeScript)

interface KieTaskResponse {
  code: number;
  msg: string;
  data: { taskId: string };
}

interface KieRecordResponse {
  code: number;
  data: {
    taskId: string;
    state: 'waiting' | 'queuing' | 'generating' | 'success' | 'fail';
    resultJson: string; // JSON string: {"resultUrls": ["..."]}
    failMsg: string;
  };
}

const KIE_API = 'https://api.kie.ai';
const API_KEY = process.env.KIE_API_KEY!;

async function createTask(model: string, input: Record<string, unknown>, callBackUrl?: string) {
  const res = await fetch(`${KIE_API}/api/v1/jobs/createTask`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ model, input, callBackUrl }),
  });
  const data: KieTaskResponse = await res.json();
  if (data.code !== 200) throw new Error(data.msg);
  return data.data.taskId;
}

async function pollResult(taskId: string, maxAttempts = 60, intervalMs = 5000) {
  for (let i = 0; i < maxAttempts; i++) {
    const res = await fetch(`${KIE_API}/api/v1/jobs/recordInfo?taskId=${taskId}`, {
      headers: { 'Authorization': `Bearer ${API_KEY}` },
    });
    const { data }: KieRecordResponse = await res.json();

    if (data.state === 'success') {
      return JSON.parse(data.resultJson).resultUrls as string[];
    }
    if (data.state === 'fail') {
      throw new Error(data.failMsg);
    }
    await new Promise(r => setTimeout(r, intervalMs));
  }
  throw new Error('Timeout');
}

// Usage
async function generateImage(prompt: string) {
  const taskId = await createTask('bytedance/seedream', {
    prompt,
    image_size: 'square_hd',
  });
  return pollResult(taskId);
}

Bash Quick Test

# Create task
curl -X POST "https://api.kie.ai/api/v1/jobs/createTask" \
  -H "Authorization: Bearer $KIE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"bytedance/seedream","input":{"prompt":"A cat astronaut"}}'

# Poll result (replace TASK_ID)
curl "https://api.kie.ai/api/v1/jobs/recordInfo?taskId=TASK_ID" \
  -H "Authorization: Bearer $KIE_API_KEY"

Image: bytedance/seedream (v3/v4), flux-2/pro, google/imagen4, ideogram/v3, grok-imagine/text-to-image

Video: kling/v2-1-pro, sora2/pro, hailuo/2-3-pro, wan/2-2-turbo, bytedance/v1-pro

Audio: elevenlabs/text-to-speech, suno/v4

Full list: kie.ai/market

Common Mistakes

Error Cause Fix
401 Unauthorized Invalid API key Check key at kie.ai/api-key
402 Insufficient Credits No credits Top up at kie.ai
200 but no result Didn't poll Use recordInfo endpoint
resultJson is string Forgot JSON.parse JSON.parse(data.resultJson)
Timeout Long generation Increase maxAttempts or use webhook
429 Rate Limited >20 req/10s Add delay between requests

Webhook (Alternative to Polling)

// In createTask, add callBackUrl:
await createTask('bytedance/seedream', { prompt }, 'https://your-server.com/webhook');

// Your webhook endpoint receives POST:
// { taskId, state, resultJson, ... }

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.