API reference

Characters

A character keeps a person’s identity consistent across generations. Create one from three face photos, or from a preset portrait. Characters also own social accounts for publishing. Plan limits apply (Influencer 10, Agency 30).

The character object

  • idstring

    Character ID.

  • objectstring

    Always character.

  • namestring

    Display name.

  • genderstring

    male or female.

  • voice_keystring | null

    Voice used where the character speaks; see Voices.

  • imagesstring[]

    Stored reference photos.

  • typestring

    photo or preset.

  • preset_base_idstring | null

    Preset used, for preset characters.

  • analysisobject | null

    Appearance analysis used to keep the identity consistent.

  • created_atinteger

    Unix ms.

  • updated_atinteger

    Unix ms.

POST/v1/characters
Scope: generateIdempotency-Key requiredReturns 201

From exactly three clear photos of the same face. Free. You must have the person’s consent (see the API terms).

  • namestringrequired

    1–30 characters.

  • genderstringrequired

    male or female.

  • imagesstring (media)[]required

    Exactly 3 face photos. Upload ID (upl_…), public https:// URL, or base64 data URL.

  • voice_keystring

    Voice key; defaults to the standard voice.

CodeWhen
LIMIT_REACHEDCharacter limit for the plan reached (details.code = CHARACTER_LIMIT).
VALIDATION_ERRORWrong number of images or an unavailable voice.
curl -X POST https://api.oriorai.com/v1/characters \
  -H "Authorization: Bearer $ORIOR_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Ava",
  "gender": "female",
  "images": [
    "upl_a1…",
    "https://example.com/ava-2.jpg",
    "upl_c3…"
  ],
  "voice_key": "voice-aria"
}'
Response
{
  "id": "Qx8p2LmN4vRt",
  "object": "character",
  "name": "Ava",
  "gender": "female",
  "voice_key": "voice-aria",
  "type": "photo",
  "preset_base_id": null,
  "images": [
    "https://storage.googleapis.com/…/characters/Qx8p2LmN4vRt/face-0.jpg",
    "…",
    "…"
  ],
  "analysis": {
    "character_analysis": {
      "detailed_description": "…"
    }
  },
  "created_at": 1758620000000,
  "updated_at": 1758620000000
}
GET/v1/characters/presets
Scope: readReturns 200

base_id values for preset characters: ready portraits (used as-is) and customisable base looks.

curl https://api.oriorai.com/v1/characters/presets \
  -H "Authorization: Bearer $ORIOR_API_KEY"
Response
{
  "object": "list",
  "ready": [
    {
      "base_id": "mila",
      "name": "Mila",
      "gender": "female",
      "description": "…",
      "collection": "Natural",
      "image_url": "https://www.oriorai.com/presets/ready/mila.webp",
      "customizable": false
    }
  ],
  "customizable": [
    {
      "base_id": "luna",
      "name": "Luna",
      "gender": "female",
      "description": "…",
      "customizable": true,
      "defaults": {
        "skin_tone": "light",
        "hair_color": "brown",
        "eye_color": "brown",
        "body_type": "slim",
        "age_range": "young"
      }
    }
  ]
}
POST/v1/characters/preset
Scope: generateIdempotency-Key requiredReturns 201

From a preset portrait. Costs 2 credits.

  • namestringrequired

    1–20 characters.

  • base_idstringrequired

    From List preset characters.

  • customizationobject

    Required for customisable bases, ignored for ready portraits.

    • skin_tonestringrequired

      light or medium.

    • hair_colorstringrequired

      black, brown or blonde.

    • eye_colorstringrequired

      brown, green or blue.

    • body_typestringrequired

      slim, average or athletic.

    • age_rangestringrequired

      young, middle or mature.

  • voice_keystring

    Voice key.

CodeWhen
VALIDATION_ERRORUnknown base_id or invalid customization.
INSUFFICIENT_CREDITSBalance below 2 credits.
curl -X POST https://api.oriorai.com/v1/characters/preset \
  -H "Authorization: Bearer $ORIOR_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Luna",
  "base_id": "luna",
  "customization": {
    "skin_tone": "light",
    "hair_color": "blonde",
    "eye_color": "green",
    "body_type": "slim",
    "age_range": "young"
  }
}'
Response
{
  "id": "Qx8p2LmN4vRt",
  "object": "character",
  "name": "Luna",
  "gender": "female",
  "voice_key": "voice-aria",
  "type": "preset",
  "preset_base_id": "luna",
  "images": [
    "https://storage.googleapis.com/…"
  ],
  "analysis": {
    "character_analysis": {
      "detailed_description": "…"
    }
  },
  "created_at": 1758620000000,
  "updated_at": 1758620000000
}
GET/v1/characters
Scope: readReturns 200

All characters of the account, newest first.

curl https://api.oriorai.com/v1/characters \
  -H "Authorization: Bearer $ORIOR_API_KEY"
Response
{
  "data": [
    {
      "id": "Qx8p2LmN4vRt",
      "object": "character",
      "name": "Ava",
      "gender": "female",
      "voice_key": "voice-aria",
      "type": "photo",
      "preset_base_id": null,
      "images": [
        "https://storage.googleapis.com/…/characters/Qx8p2LmN4vRt/face-0.jpg",
        "…",
        "…"
      ],
      "analysis": {
        "character_analysis": {
          "detailed_description": "…"
        }
      },
      "created_at": 1758620000000,
      "updated_at": 1758620000000
    }
  ]
}
GET/v1/characters/{id}
Scope: readReturns 200

One character.

  • idstringrequired

    Character ID.

curl https://api.oriorai.com/v1/characters/Qx8p2LmN4vRt \
  -H "Authorization: Bearer $ORIOR_API_KEY"
Response
{
  "id": "Qx8p2LmN4vRt",
  "object": "character",
  "name": "Ava",
  "gender": "female",
  "voice_key": "voice-aria",
  "type": "photo",
  "preset_base_id": null,
  "images": [
    "https://storage.googleapis.com/…/characters/Qx8p2LmN4vRt/face-0.jpg",
    "…",
    "…"
  ],
  "analysis": {
    "character_analysis": {
      "detailed_description": "…"
    }
  },
  "created_at": 1758620000000,
  "updated_at": 1758620000000
}
PATCH/v1/characters/{id}
Scope: generateIdempotency-Key requiredReturns 200

Rename or change the voice. Send at least one field.

  • idstringrequired

    Character ID.

  • namestring

    1–30 characters.

  • voice_keystring | null

    New voice; null resets to the default.

curl -X PATCH https://api.oriorai.com/v1/characters/Qx8p2LmN4vRt \
  -H "Authorization: Bearer $ORIOR_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Ava Rose"
}'
Response
{
  "id": "Qx8p2LmN4vRt",
  "object": "character",
  "name": "Ava Rose",
  "gender": "female",
  "voice_key": "voice-aria",
  "type": "photo",
  "preset_base_id": null,
  "images": [
    "https://storage.googleapis.com/…/characters/Qx8p2LmN4vRt/face-0.jpg",
    "…",
    "…"
  ],
  "analysis": {
    "character_analysis": {
      "detailed_description": "…"
    }
  },
  "created_at": 1758620000000,
  "updated_at": 1758620000000
}
DELETE/v1/characters/{id}
Scope: generateIdempotency-Key requiredReturns 200

Deletes the character and its photos and disconnects its social accounts. Past generations are kept.

  • idstringrequired

    Character ID.

curl -X DELETE https://api.oriorai.com/v1/characters/Qx8p2LmN4vRt \
  -H "Authorization: Bearer $ORIOR_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
Response
{
  "id": "Qx8p2LmN4vRt",
  "object": "character",
  "deleted": true
}