Skip to content
API Reference
API Reference

Gemini Omni Create-Character

Use the create character endpoint to receive a result in the same response.

01

Overview

Use the create character endpoint and read the result from the same response.

Quick start

  1. Create an API key and set it as RUNAPI_API_KEY.
  2. Send a POST request whose body matches the request schema.
  3. Read the result from the successful response body.

Endpoint

POST /api/v1/gemini_omni/create_character
Base URL
https://runapi.ai
API version
v1
Authentication
Authorization: Bearer YOUR_API_TOKEN
02

Supported models

Open a model page for current pricing, rate limits, and commercial-usage details.

03

Request schema

JSON body

Send only the fields declared for this endpoint.

gemini-omni-character5 fields
audio_idsarray
Optional

Audio preset IDs returned by create-audio.

body_reference_image_urlstring
Optional

Optional public full-body reference image URL; reference_image_url must provide the portrait.

character_namestring
Optional

Character display name.

Bound: 210
descriptionsstring
Required

Character appearance, identity, style, clothing, or personality description.

Bound: 20000
reference_image_urlstring
Required

Public portrait reference image URL.

04

Success response

HTTP 200

POST /api/v1/gemini_omni/create_character

Response schema
JSON
{
  "properties": {
    "billing": {
      "properties": {
        "refund": {
          "oneOf": [
            {
              "properties": {
                "refunded_at": {
                  "type": "string"
                }
              },
              "required": [
                "refunded_at"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "reservation": {
          "oneOf": [
            {
              "properties": {
                "amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "amount_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "settlement": {
          "oneOf": [
            {
              "properties": {
                "amount_micro_cents": {
                  "type": "integer"
                },
                "charged_amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "charged_amount_cents",
                "amount_micro_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        }
      },
      "required": [
        "reservation",
        "settlement",
        "refund"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "character": {
      "properties": {
        "id": {
          "description": "Created character identifier.",
          "type": "string"
        },
        "images": {
          "description": "Ordered character reference images; portrait first and optional full-body image second.",
          "items": {
            "properties": {
              "url": {
                "type": "string",
                "x-runapi-generated-media": true
              }
            },
            "required": [
              "url"
            ],
            "type": "object",
            "unevaluatedProperties": false
          },
          "maxItems": 2,
          "type": "array"
        },
        "name": {
          "description": "Character display name.",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "id": {
      "description": "Created character identifier.",
      "type": "string"
    }
  },
  "required": [
    "id",
    "character",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Response example

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "character": {
    "id": "chr_reference_presenter",
    "images": [
      {
        "url": "https://cdn.runapi.ai/public/samples/portrait.jpg"
      },
      {
        "url": "https://cdn.runapi.ai/public/samples/image.jpg"
      }
    ],
    "name": "Studio Presenter"
  },
  "id": "chr_reference_presenter"
}
05

Errors

HTTP 401

POST /api/v1/gemini_omni/create_character

Response schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Response example

JSON
{
  "error": "Authentication required"
}
06

Errors

HTTP 400

POST /api/v1/gemini_omni/create_character

Response schema
JSON
{
  "oneOf": [
    {
      "properties": {
        "error": {
          "description": "Human-readable error message.",
          "type": "string"
        }
      },
      "required": [
        "error"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    {
      "properties": {
        "error": {
          "description": "Human-readable validation summary.",
          "type": "string"
        },
        "errors": {
          "additionalProperties": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": "Validation messages keyed by public request field, with an array of human-readable strings for each field.",
          "type": "object"
        }
      },
      "required": [
        "error",
        "errors"
      ],
      "type": "object",
      "unevaluatedProperties": false
    }
  ]
}

Response example

JSON
{
  "error": "Validation failed",
  "errors": {
    "descriptions": [
      "is required"
    ]
  }
}
07

Errors

HTTP 402

POST /api/v1/gemini_omni/create_character

Response schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Response example

JSON
{
  "error": "Insufficient balance"
}
08

Errors

HTTP 429

POST /api/v1/gemini_omni/create_character

Response schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Response example

JSON
{
  "error": "API key credit limit exceeded"
}
09

Errors

HTTP 409

POST /api/v1/gemini_omni/create_character

Response schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Response example

JSON
{
  "error": "The request uses features that are not supported for the selected model"
}
10

Errors

HTTP 429

POST /api/v1/gemini_omni/create_character

Response schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Response example

JSON
{
  "error": "Rate limit reached. Please retry later."
}
11

Errors

HTTP 503

POST /api/v1/gemini_omni/create_character

Response schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Response example

JSON
{
  "error": "Service under maintenance, please try again later"
}
12

Errors

HTTP 504

POST /api/v1/gemini_omni/create_character

Response schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Response example

JSON
{
  "error": "The request timed out"
}
13

Generated Code Samples

Use cURL directly, or install an SDK for your language. Each sample submits the validated request shown in this reference.

Install

Shell
pip install runapi-gemini-omni
PYTHON
import os
from runapi.gemini_omni import GeminiOmniClient

client = GeminiOmniClient(api_key=os.environ["RUNAPI_API_KEY"])
result = client.create_character.run(
  descriptions="A presenter wearing a blue jacket in a bright studio.",
  reference_image_url="https://cdn.runapi.ai/public/samples/portrait.jpg",
  body_reference_image_url="https://cdn.runapi.ai/public/samples/image.jpg",
  character_name="Studio Presenter"
)