---
title: RunAPI - Unified AI API for Video, Music, Image & LLM Generation
description: Access video, music, image, and LLM models through one unified API. Integrate Kling, Suno, Flux, Claude, Gemini, and DeepSeek with predictable pricing and developer-friendly SDKs.
url: https://runapi.ai/.md
canonical: https://runapi.ai/
locale: en
image: https://runapi.ai/assets/opengraph-bfaaa0f0.png
alternates:
  en: https://runapi.ai/
  zh-CN: https://runapi.ai/zh-CN
  es: https://runapi.ai/es
  ja: https://runapi.ai/ja
  de: https://runapi.ai/de
  fr: https://runapi.ai/fr
  pt-BR: https://runapi.ai/pt-BR
  ko: https://runapi.ai/ko
  it: https://runapi.ai/it
  nl: https://runapi.ai/nl
  pl: https://runapi.ai/pl
  tr: https://runapi.ai/tr
  zh-TW: https://runapi.ai/zh-TW
  zh-HK: https://runapi.ai/zh-HK
  ar: https://runapi.ai/ar
  x-default: https://runapi.ai/
---

> HTML version: https://runapi.ai/
> Site index for agents: https://runapi.ai/llms.txt


# Unified AI API for Video, Music, Image & LLMs

One API key for 240+ AI models: video, image, music and LLM APIs. Use Claude Code, Codex and Cursor. Pay as you go.

- [Get Free API Key](https://runapi.ai/login)
- [View Documentation](https://runapi.ai/docs/guides)

## Made with RunAPI

- **Kling** - Kling (Video)
- **Veo 3** - Veo 3.1 (Video)
- **Fire choreography** - Seedance (Video)
- **Flux** - Flux (Image)
- **Midjourney** - Midjourney (Image)
- **Wide Open Sky** - Suno (Music)
- **Natural TTS voice** - Fish Audio (Audio)

Choosing a video model? [Compare Seedance 2.0, Kling 3.0, and Veo 3.1 APIs](https://runapi.ai/ai-video-api-comparison.md)


## 200+ Models · 10+ AI services, unified under one API

Kling, Veo 3.1, Seedance, Suno, GPT Image 2, Nano Banana, Flux, Midjourney, Claude, Gemini, DeepSeek, Grok, Qwen Image, Wan, Hailuo, Runway, PixVerse, Seedream, ElevenLabs, Fish Audio


<!-- homepage-slot: benefit-cards -->
<!-- homepage-slot-owner: API-1831 state=ready -->
## Why developers choose RunAPI

The boring parts of multi-model AI infrastructure, handled.

### All models, one API

Access video, music, image, and LLM models through a single API key — including Suno (no official API available elsewhere) and Kling video generation.

### Production ready

Built for production workloads. Async task management, webhook callbacks, automatic retries, and predictable credit-based billing. SDKs in Python, Node.js, PHP, Java, Ruby, and Go.

### Transparent pricing

Pay only for what you use. No subscriptions, no hidden fees. See exactly what each generation costs before you call the API.



<!-- homepage-slot: api-code-language-tabs -->
<!-- homepage-slot-owner: API-1838 state=ready -->

## Endpoint code examples

Three lines of code to generate a video, create music, or produce an image.

### Curl

```text
curl -X POST https://runapi.ai/api/v1/kling/text_to_video \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"model":"kling-v3-turbo-text-to-video","prompt":"A paper kite flying above a quiet coastal town at sunrise","duration_seconds":5,"aspect_ratio":"16:9","output_resolution":"720p"}'
```

### Python

```text
import os
from runapi.kling import KlingClient

client = KlingClient(api_key=os.environ["RUNAPI_API_KEY"])
task = client.text_to_video.create(
  model="kling-v3-turbo-text-to-video",
  prompt="A paper kite flying above a quiet coastal town at sunrise",
  duration_seconds=5,
  aspect_ratio="16:9",
  output_resolution="720p"
)
```

### Node.js

```text
import { KlingClient } from "@runapi.ai/kling";

const client = new KlingClient({ apiKey: process.env.RUNAPI_API_KEY });
const task = await client.textToVideo.create({
  "model": "kling-v3-turbo-text-to-video",
  "prompt": "A paper kite flying above a quiet coastal town at sunrise",
  "duration_seconds": 5,
  "aspect_ratio": "16:9",
  "output_resolution": "720p"
});
```

### Go

```text
package main

import (
  "context"
  "log"
  "os"

  "github.com/runapi-ai/core-sdk/go/option"
  kling "github.com/runapi-ai/kling-sdk/go/kling"
)

func main() {
  client, err := kling.NewClient(option.WithAPIKey(os.Getenv("RUNAPI_API_KEY")))
  if err != nil {
    log.Fatal(err)
  }

  task, err := client.TextToVideo.Create(context.Background(), kling.TextToVideoParams{
    Model: kling.TextToVideoModel("kling-v3-turbo-text-to-video"),
    Prompt: "A paper kite flying above a quiet coastal town at sunrise",
    DurationSeconds: 5,
    AspectRatio: "16:9",
    OutputResolution: kling.KlingTextToVideoOutputResolution("720p"),
  })
  if err != nil {
    log.Fatal(err)
  }
  _ = task
}
```

### Ruby

```text
require "runapi/kling"

client = RunApi::Kling::Client.new(api_key: ENV.fetch("RUNAPI_API_KEY"))
task = client.text_to_video.create(
  model: "kling-v3-turbo-text-to-video",
  prompt: "A paper kite flying above a quiet coastal town at sunrise",
  duration_seconds: 5,
  aspect_ratio: "16:9",
  output_resolution: "720p"
)
```

### PHP

```text
<?php

require __DIR__ . '/vendor/autoload.php';

use RunApi\Core\ClientOptions;
use RunApi\Kling\KlingClient;

$client = new KlingClient(new ClientOptions(apiKey: getenv('RUNAPI_API_KEY')));
$task = $client->textToVideo->create([
  "model" => "kling-v3-turbo-text-to-video",
  "prompt" => "A paper kite flying above a quiet coastal town at sunrise",
  "duration_seconds" => 5,
  "aspect_ratio" => "16:9",
  "output_resolution" => "720p"
]);
```

### HTTP 200

```json
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "status": "completed",
  "videos": [
    {
      "url": "https://file.runapi.ai/reference-video.mp4"
    }
  ]
}
```


<!-- homepage-slot: three-step-onboarding -->
<!-- homepage-slot-owner: API-1845 state=ready -->

## Three Steps to Your First Generation

HOW IT WORKS

- **Get an API Key** - Sign up and generate a free API key from the dashboard. No credit card required.
- **Pick a Model** - Browse the model catalog, choose by modality and provider, and copy the model ID.
- **Call the API** - Send a POST request with your prompt and model ID. RunAPI routes it to the provider, manages the async lifecycle, and returns structured JSON.


<!-- homepage-slot: tool-integration-strip -->
<!-- homepage-slot-owner: API-1852 state=ready -->

## Developer Tools

- **[Claude Code](https://runapi.ai/docs/resources/tool-integrations/claude-code)** - MCP + CLI
- **[Codex](https://runapi.ai/docs/resources/tool-integrations/codex-app)** - MCP
- **[Gemini CLI](https://runapi.ai/docs/resources/mcp/local)** - MCP
- **[Cursor](https://runapi.ai/docs/resources/mcp/local#cursor)** - MCP
- **[Windsurf](https://runapi.ai/docs/resources/mcp/local#windsurf)** - MCP
- **[VS Code](https://runapi.ai/docs/resources/tool-integrations/claude-code-vscode-cursor)** - Extension

Give Claude Code, Codex, Gemini CLI, and other coding agents access to 200+ models through MCP server or installable skills.

```bash
npx -y @runapi.ai/mcp
```


<!-- homepage-slot: modality-cards -->
<!-- homepage-slot-owner: API-1858 state=ready -->

## One API for Every AI Model

Three lines of code to generate a video, create music, or produce an image.

- [**Video**](https://runapi.ai/models?modality=video.md) - Kling, Seedance, HappyHorse, Veo 3.1 - 78 models
- [**Image**](https://runapi.ai/models?modality=image.md) - GPT Image 2, Nano Banana, Seedream, Qwen Image - 51 models
- [**Music**](https://runapi.ai/models?capabilities%5B%5D=Text+to+music&modality=audio_music.md) - Suno, Producer - 14 models
- [**Audio**](https://runapi.ai/models?capabilities%5B%5D=Isolate+audio&capabilities%5B%5D=Text+to+sound&capabilities%5B%5D=Speech+to+text&capabilities%5B%5D=Text+to+dialogue&capabilities%5B%5D=Text+to+speech&capabilities%5B%5D=Create+audio&modality=audio_music.md) - ElevenLabs, Fish Audio, Gemini TTS, OpenAI TTS - 21 models
- [**LLM**](https://runapi.ai/models?modality=text.md) - Claude, GPT, Gemini, DeepSeek - 66 models


<!-- homepage-slot: generator-playground -->
<!-- homepage-slot-owner: API-1865 state=ready -->

## Playground

Three lines of code to generate a video, create music, or produce an image.

### Video

- **Kling v2.1** - `/api/v1/kling/text_to_video` - $0.61 / second
  - `duration_seconds` (Duration): 5s, 10s
  - `aspect_ratio` (Aspect ratio): 16:9, 9:16, 1:1
- **Gemini Omni** - `/api/v1/gemini_omni/create_audio` - Free / track
- **Grok Imagine** - `/api/v1/grok_imagine/edit_image` - $0.04 / image

### Image

- **Flux** - `/api/v1/flux/text_to_image` - $0.03 / image
  - `aspect_ratio` (Aspect ratio): 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3
  - `output_count` (Count): 1
- **Flux 2** - `/api/v1/flux_2/remix_image` - $0.14-$0.24 / image
  - `aspect_ratio` (Aspect ratio): 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, auto
  - `output_resolution` (Resolution): 1k, 2k
- **Flux Kontext** - `/api/v1/flux_kontext/text_to_image` - $0.17 / image
  - `aspect_ratio` (Aspect ratio): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16
  - `output_format` (Format): jpeg, png

### Music

- **ElevenLabs** - `/api/v1/elevenlabs/isolate_audio` - $0.12 / minute
- **Fish Audio** - `/api/v1/fish_audio/text_to_speech` - $0.02 / 1K UTF-8 bytes
  - `bitrate_kbps` (Bitrate kbps): 64, 128, 192
  - `output_format` (Format): mp3, wav
- **Gemini TTS** - `/api/v1/gemini_tts/text_to_speech` - Input $1.40 / 1M tokens | Output $28.00 / 1M tokens

### Audio

- **ElevenLabs** - `/api/v1/elevenlabs/isolate_audio` - $0.12 / minute
- **Fish Audio** - `/api/v1/fish_audio/text_to_speech` - $0.02 / 1K UTF-8 bytes
  - `bitrate_kbps` (Bitrate kbps): 64, 128, 192
  - `output_format` (Format): mp3, wav
- **Gemini TTS** - `/api/v1/gemini_tts/text_to_speech` - Input $1.40 / 1M tokens | Output $28.00 / 1M tokens

### LLM

- **Claude** - `/v1/messages` - Input $10.00 / 1M tokens | Output $50.00 / 1M tokens
- **DeepSeek** - `/v1/chat/completions` - Input $0.22 / 1M tokens | Output $0.66 / 1M tokens
- **Embedding** - `/v1/embeddings` - Input $0.13 / 1M tokens | Output Free / 1M tokens



<!-- homepage-slot: endpoint-sdk-agent-tabs -->
<!-- homepage-slot-owner: API-1870 state=ready -->

## Start building in minutes

Call the REST endpoint directly, use an SDK, or let your coding agent do it.

### endpoints

```runapi-http
POST /api/v1/kling/text_to_video
GET  /api/v1/kling/text_to_video/{task_id}
POST /v1/chat/completions
GET  /api/v1/me/balance
```
### curl

```curl
curl -X POST https://runapi.ai/api/v1/kling/text_to_video \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"model":"kling-v3-turbo-text-to-video","prompt":"A paper kite flying above a quiet coastal town at sunrise","duration_seconds":5,"aspect_ratio":"16:9","output_resolution":"720p"}'
```
### Python

```python
import os
from runapi.kling import KlingClient

client = KlingClient(api_key=os.environ["RUNAPI_API_KEY"])
task = client.text_to_video.create(
  model="kling-v3-turbo-text-to-video",
  prompt="A paper kite flying above a quiet coastal town at sunrise",
  duration_seconds=5,
  aspect_ratio="16:9",
  output_resolution="720p"
)
```
### Node.js

```javascript
import { KlingClient } from "@runapi.ai/kling";

const client = new KlingClient({ apiKey: process.env.RUNAPI_API_KEY });
const task = await client.textToVideo.create({
  "model": "kling-v3-turbo-text-to-video",
  "prompt": "A paper kite flying above a quiet coastal town at sunrise",
  "duration_seconds": 5,
  "aspect_ratio": "16:9",
  "output_resolution": "720p"
});
```
### Claude Code

```bash
claude mcp add runapi -s user -- npx -y @runapi.ai/mcp
```
### Codex

```bash
codex mcp add runapi -- npx -y @runapi.ai/mcp
```
### Gemini CLI

```bash
gemini mcp add runapi npx -y @runapi.ai/mcp
```


<!-- homepage-slot: developer-use-case-grid -->
<!-- homepage-slot-owner: API-1876 state=ready -->

## What Developers Build with RunAPI

### AI-Powered Apps

Ship image, video, and music generation into your product without managing provider accounts. One API key, one billing dashboard, one webhook format.

### Agent Workflows

Give Claude Code, Codex, Gemini CLI, and other coding agents access to 240+ models through MCP server or installable skills.

### Batch Media Pipelines

Generate thousands of images, videos, or audio files with async task management and webhook callbacks. Poll or wait — the CLI and SDKs handle both.

### Multi-Model Prototyping

Compare output quality across providers without separate signups. Switch from Kling to Veo to Seedance by changing one parameter.



<!-- homepage-slot: production-team-capabilities -->
<!-- homepage-slot-owner: API-1883 state=ready -->

## Everything You Need to Manage API Access

Give every project its own API key, budget, and permissions. Monitor usage across your organization in real time.

### Production ready

Built for production workloads. Async task management, webhook callbacks, automatic retries, and predictable credit-based billing. SDKs in Python, Node.js, PHP, Java, Ruby, and Go.

### Access Control

Restrict keys to specific models or modalities. Revoke instantly without affecting other keys. Set expiration dates for temporary access.

### Usage Analytics

The team dashboard brings API keys, usage, cost tracking, and access status into one workspace.



## Building with a team?

We're here to help with enterprise setup, integrations, and technical questions.

[Contact Us](https://runapi.ai/contact.md)

<!-- homepage-slot: alternatives-comparison -->
<!-- homepage-slot-owner: API-1896 state=ready -->
## RunAPI vs Alternatives

| Feature | RunAPI | OpenRouter | Direct API |
| --- | --- | --- | --- |
| Modalities | Video, Image, Music, Audio, LLM | LLM only | Per provider |
| Models | 240+ | 300+ (LLM) | 1 provider |
| Pricing | 15-25% savings | Market rate | Official rate |
| SDKs | 6 languages | 2 languages | Varies |
| CLI | ✓ | ✗ | ✗ |
| MCP Server | ✓ | ✗ | ✗ |
| Agent Skills | ✓ | ✗ | ✗ |
| Async + Webhooks | ✓ | ✗ | Varies |


<!-- homepage-slot: developer-tool-cards -->
<!-- homepage-slot-owner: API-1902 state=ready -->

## Developer Tools

### MCP Server

Connect Claude Code, Cursor, and MCP-compatible agents to 160+ models.

[Learn more](https://runapi.ai/mcp.md)

### CLI

Run AI models from your terminal with JSON-first output.

[Learn more](https://runapi.ai/cli.md)

### SDKs

Python, Node.js, PHP, Java, Ruby, and Go SDKs for programmatic integration.

[Learn more](https://runapi.ai/sdk.md)

### Model Catalog

Browse all 200+ models with pricing, parameters, and code samples.

[Learn more](https://runapi.ai/models.md)




## Frequently asked questions

### How do I get started with RunAPI?

Sign up for a free account at runapi.ai, generate an API key from the dashboard, and make your first API request. No credit card is required. The quickstart takes under 10 minutes — install an SDK, set your API key as an environment variable, and call any model endpoint. The model catalog shows every available model with its parameters, pricing, and code samples.

### What AI models are available through RunAPI?

RunAPI connects to 200+ models across 25 providers and 5 modalities. Video generation includes Kling 3.0, Veo 3.1, Seedance 2.0, Hailuo, Wan, Runway, and Luma. Image generation covers Flux 2 Pro, Nano Banana, GPT Image, Seedream, Imagen 4, Ideogram 3, and Recraft. Music is powered by Suno v4 through v5.5. Audio includes ElevenLabs TTS, sound effects, and speech-to-text. LLMs include Claude Opus 4.8, GPT-5.6, Gemini 3 Pro, DeepSeek V4, and Grok. New models are added within days of provider release.

### How does RunAPI pricing work?

Every API call is billed per request with no monthly minimum, no subscription, and no hidden fees. Failed generations are never charged. Credits do not expire. The pricing page shows exact per-model costs, and the check_pricing API returns real-time rates programmatically.

### Do you offer SDKs and developer tools?

Yes. Official SDKs are available for Python, Node.js, Ruby, PHP, Java, and Go. Each SDK handles authentication, async task polling, and typed responses. Beyond SDKs, RunAPI provides a CLI for terminal-based generation, an MCP server for Claude Code, Cursor, and other coding agents, and installable model skills for agent runtimes. All tools share one API key.

### What happens when a generation fails?

Failed generations are not charged. The system automatically retries transient provider failures. You receive a webhook callback with the failure details if you configured a callback URL, or you can poll the task status endpoint. The dashboard shows all tasks with their status and error details.

### How does RunAPI handle async media generation?

Media tasks (video, music, image) run asynchronously. You submit a request, receive a task ID immediately, and poll for completion or configure a webhook callback URL to receive results automatically. The CLI provides a built-in runapi wait command, and the SDKs offer both polling and callback patterns. Task status transitions from pending through processing to completed or failed.

### Can I use RunAPI with AI coding agents?

Yes. RunAPI publishes an MCP server that works with Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, and any MCP-compatible host. It also publishes installable model skills for agent runtimes. Agents can browse models, check pricing, and create generation tasks as native tool calls — no manual API configuration required.

### Is RunAPI compatible with the OpenAI API format?

Yes. RunAPI exposes OpenAI-compatible LLM endpoints at /v1/chat/completions, /v1/messages (Anthropic format), and /v1/responses. Any application that works with the OpenAI SDK can point its base URL to RunAPI and access Claude, Gemini, DeepSeek, and other LLMs without code changes. Media generation uses RunAPI-native endpoints with consistent JSON structure across all providers.

### Do I need separate accounts with each AI provider?

No. A single RunAPI API key unlocks all 25 providers. You do not need accounts with Anthropic, OpenAI, Google, Kuaishou, Suno, Black Forest Labs, or any other provider. RunAPI handles provider authentication, rate limiting, and billing consolidation. You see one dashboard, one invoice, one set of API credentials.

### What support and SLA does RunAPI offer?

RunAPI provides email support at contact@runapi.ai and a status page monitoring API uptime. The platform routes requests in real time and adds minimal overhead. Callback delivery failures trigger email alerts with diagnostic details so you can fix webhook endpoints quickly.



## Ready to build with AI?

Get your free API key and start generating in minutes.

[Get API Key](https://runapi.ai/login)


---

## More from RunAPI

- [Home](https://runapi.ai/.md)
### Product
- [Model Catalog](https://runapi.ai/models.md)
- [Pricing](https://runapi.ai/pricing.md)
- [Providers](https://runapi.ai/models#all-models)
### Developers
- [Documentation](https://runapi.ai/docs/guides)
- [SDKs](https://runapi.ai/sdk.md)
- [CLI](https://runapi.ai/cli.md)
- [MCP Server](https://runapi.ai/mcp.md)
### Guides
- [Claude Code vs Cursor](https://runapi.ai/claude-code-vs-cursor.md)
- [Cursor API Setup](https://runapi.ai/cursor-api-setup.md)
- [RunAPI vs OpenRouter](https://runapi.ai/openrouter-alternative.md)
### Company
- [Enterprise](https://runapi.ai/contact.md)
- [Contact](https://runapi.ai/contact.md)
### Legal
- [Terms](https://runapi.ai/terms.md)
- [Privacy](https://runapi.ai/privacy.md)
- [Site index for agents](https://runapi.ai/llms.txt)

Contact: contact@runapi.ai

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "inLanguage": "en",
    "@type": "WebSite",
    "name": "RunAPI",
    "url": "https://runapi.ai/",
    "potentialAction": {
      "@type": "SearchAction",
      "target": {
        "@type": "EntryPoint",
        "urlTemplate": "https://runapi.ai/models?q={search_term_string}"
      },
      "query-input": "required name=search_term_string"
    }
  },
  {
    "@context": "https://schema.org",
    "inLanguage": "en",
    "@type": "Organization",
    "name": "RunAPI",
    "url": "https://runapi.ai/",
    "logo": {
      "@type": "ImageObject",
      "url": "https://runapi.ai/icon.svg"
    },
    "sameAs": [
      "https://github.com/runapi-ai"
    ]
  },
  {
    "@context": "https://schema.org",
    "inLanguage": "en",
    "@type": "SoftwareApplication",
    "name": "RunAPI",
    "applicationCategory": "DeveloperApplication",
    "description": "Access video, music, image, and LLM models through one unified API. Integrate Kling, Suno, Flux, Claude, Gemini, and DeepSeek with predictable pricing and developer-friendly SDKs.",
    "url": "https://runapi.ai/",
    "offers": {
      "@type": "Offer",
      "price": "0",
      "priceCurrency": "USD",
      "description": "Free API key with pay-as-you-go pricing"
    }
  },
  {
    "@context": "https://schema.org",
    "inLanguage": "en",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "How do I get started with RunAPI?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sign up for a free account at runapi.ai, generate an API key from the dashboard, and make your first API request. No credit card is required. The quickstart takes under 10 minutes — install an SDK, set your API key as an environment variable, and call any model endpoint. The model catalog shows every available model with its parameters, pricing, and code samples."
        }
      },
      {
        "@type": "Question",
        "name": "What AI models are available through RunAPI?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "RunAPI connects to 200+ models across 25 providers and 5 modalities. Video generation includes Kling 3.0, Veo 3.1, Seedance 2.0, Hailuo, Wan, Runway, and Luma. Image generation covers Flux 2 Pro, Nano Banana, GPT Image, Seedream, Imagen 4, Ideogram 3, and Recraft. Music is powered by Suno v4 through v5.5. Audio includes ElevenLabs TTS, sound effects, and speech-to-text. LLMs include Claude Opus 4.8, GPT-5.6, Gemini 3 Pro, DeepSeek V4, and Grok. New models are added within days of provider release."
        }
      },
      {
        "@type": "Question",
        "name": "How does RunAPI pricing work?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Every API call is billed per request with no monthly minimum, no subscription, and no hidden fees. Failed generations are never charged. Credits do not expire. The pricing page shows exact per-model costs, and the check_pricing API returns real-time rates programmatically."
        }
      },
      {
        "@type": "Question",
        "name": "Do you offer SDKs and developer tools?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Yes. Official SDKs are available for Python, Node.js, Ruby, PHP, Java, and Go. Each SDK handles authentication, async task polling, and typed responses. Beyond SDKs, RunAPI provides a CLI for terminal-based generation, an MCP server for Claude Code, Cursor, and other coding agents, and installable model skills for agent runtimes. All tools share one API key."
        }
      },
      {
        "@type": "Question",
        "name": "What happens when a generation fails?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Failed generations are not charged. The system automatically retries transient provider failures. You receive a webhook callback with the failure details if you configured a callback URL, or you can poll the task status endpoint. The dashboard shows all tasks with their status and error details."
        }
      },
      {
        "@type": "Question",
        "name": "How does RunAPI handle async media generation?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Media tasks (video, music, image) run asynchronously. You submit a request, receive a task ID immediately, and poll for completion or configure a webhook callback URL to receive results automatically. The CLI provides a built-in runapi wait command, and the SDKs offer both polling and callback patterns. Task status transitions from pending through processing to completed or failed."
        }
      },
      {
        "@type": "Question",
        "name": "Can I use RunAPI with AI coding agents?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Yes. RunAPI publishes an MCP server that works with Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, and any MCP-compatible host. It also publishes installable model skills for agent runtimes. Agents can browse models, check pricing, and create generation tasks as native tool calls — no manual API configuration required."
        }
      },
      {
        "@type": "Question",
        "name": "Is RunAPI compatible with the OpenAI API format?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Yes. RunAPI exposes OpenAI-compatible LLM endpoints at /v1/chat/completions, /v1/messages (Anthropic format), and /v1/responses. Any application that works with the OpenAI SDK can point its base URL to RunAPI and access Claude, Gemini, DeepSeek, and other LLMs without code changes. Media generation uses RunAPI-native endpoints with consistent JSON structure across all providers."
        }
      },
      {
        "@type": "Question",
        "name": "Do I need separate accounts with each AI provider?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "No. A single RunAPI API key unlocks all 25 providers. You do not need accounts with Anthropic, OpenAI, Google, Kuaishou, Suno, Black Forest Labs, or any other provider. RunAPI handles provider authentication, rate limiting, and billing consolidation. You see one dashboard, one invoice, one set of API credentials."
        }
      },
      {
        "@type": "Question",
        "name": "What support and SLA does RunAPI offer?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "RunAPI provides email support at contact@runapi.ai and a status page monitoring API uptime. The platform routes requests in real time and adds minimal overhead. Callback delivery failures trigger email alerts with diagnostic details so you can fix webhook endpoints quickly."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "inLanguage": "en",
    "@type": "HowTo",
    "name": "Three Steps to Your First Generation",
    "step": [
      {
        "@type": "HowToStep",
        "position": 1,
        "name": "Get an API Key",
        "text": "Sign up and generate a free API key from the dashboard. No credit card required."
      },
      {
        "@type": "HowToStep",
        "position": 2,
        "name": "Pick a Model",
        "text": "Browse the model catalog, choose by modality and provider, and copy the model ID."
      },
      {
        "@type": "HowToStep",
        "position": 3,
        "name": "Call the API",
        "text": "Send a POST request with your prompt and model ID. RunAPI routes it to the provider, manages the async lifecycle, and returns structured JSON."
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "inLanguage": "en",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Home",
        "item": "https://runapi.ai/"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "RunAPI",
        "item": "https://runapi.ai/"
      }
    ]
  }
]
```
