---
title: "Full bundle the avatar detail page needs in one round-trip."
method: GET
path: "/api/v1/avatars/{avatar_id}/detail"
tags: ["Avatars"]
---

# Full bundle the avatar detail page needs in one round-trip.

`GET /api/v1/avatars/{avatar_id}/detail`

## Request

- Base URL: `https://api.avatarfactory.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.avatarfactory.io/api/v1/avatars/{avatar_id}/detail`
- Auth: one of:
  - API key in cookie `session`
  - HTTP bearer

<br/>Assembled by ``build_detail_response`` (shared with the PATCH echo), so the two<br/>responses can never drift; the Scenes split excludes outfit sheets and the bundle<br/>carries ``outfit_count`` for the Outfits tab (plan 3).

## Path parameters

- `avatar_id` integer, required

## Response `200`

OK

- AvatarDetailResponse: Full bundle the avatar detail page needs. Combines the avatar row, its scenes/images split, recent videos, social accounts, the reference-pack summary, and the integration health flags the page used to receive via ``render_template`` kwargs.
  - `age_band` string, nullable
  - `archived` integer
  - `auto_publish` integer
  - `bio` string, nullable
  - `category` CategoryRow
    - `color` string, nullable
    - `id` integer, required
    - `name` string, required
  - `category_id` integer, nullable
  - `content_pillars` AvatarPillar[]
    - `description` string, nullable
    - `id` integer, required
    - `name` string, required
    - `weight` integer
  - `controversy_level` integer, nullable
  - `created_at` string, date-time, nullable
  - `currently_lives_in` string, nullable
  - `default_engine` string, nullable
  - `default_text_style` string, nullable
  - `description` string, nullable
  - `face_focus` FaceFocusPoint: Where a square or circular crop of a face image has to look. Percentages of the FULL stored frame, so the SPA can hand them straight to a CSS ``object-position``. Written by ``app.modules.avatars.face_focus``; absent (``None``) when no face was detected, and the shared `AvatarFace` component then falls back to its upper-third default.
    - `x` number, required
    - `y` number, required
  - `face_image` string, nullable
  - `first_outfit_status` string, nullable
  - `forbidden_topics` string, nullable
  - `gemini_ready` boolean
  - `gender` string, nullable
  - `heygen_avatar_id` string, nullable
  - `heygen_expression` string, nullable
  - `heygen_sync_error` string, nullable
  - `heygen_sync_status` string, nullable
  - `heygen_talking_style` string, nullable
  - `id` integer, required
  - `image_prompt` string, nullable
  - `images` AvatarSceneItem[]
    - `auto_saved` integer
    - `created_at` string, date-time, nullable
    - `filename` string, nullable
    - `heygen_photo_id` string, nullable
    - `id` integer, required
    - `is_primary` integer
    - `kind` string
    - `scene_title` string, nullable
  - `instagram_display_name` string, nullable
  - `instagram_handle` string, nullable
  - `is_template` boolean
  - `motion_prompt` string, nullable
  - `name` string, required
  - `native_language` string, nullable
  - `origin` string, nullable
  - `outfit_count` integer
  - `posting_frequency` integer, nullable
  - `posting_times` string, nullable
  - `profession` string, nullable
  - `reference_summary` AvatarReferenceSummary
    - `canonical_count` integer
    - `filled_count` integer
    - `has_any` boolean
  - `scene_guidelines` string, nullable
  - `scenes` AvatarSceneItem[]
    - `auto_saved` integer
    - `created_at` string, date-time, nullable
    - `filename` string, nullable
    - `heygen_photo_id` string, nullable
    - `id` integer, required
    - `is_primary` integer
    - `kind` string
    - `scene_title` string, nullable
  - `signature_phrases` string, nullable
  - `social_accounts` AvatarSocialAccount[]
    - `account_name` string, nullable
    - `connected_at` string, date-time, nullable
    - `id` integer, required
    - `platform` string, nullable
  - `speaking_style` string, nullable
  - `story` string, nullable
  - `target_audience` string, nullable
  - `tiktok_handle` string, nullable
  - `timezone` string, nullable
  - `updated_at` string, date-time, nullable
  - `videos` AvatarVideoSummary[]
    - `background_id` integer, nullable
    - `background_image` string, nullable
    - `background_name` string, nullable
    - `created_at` string, date-time, nullable
    - `duration_seconds` number, nullable
    - `final_video_file` string, nullable
    - `id` integer, required
    - `raw_video_file` string, nullable
    - `status` string, nullable
    - `title` string, nullable
  - `voice_description` string, nullable
  - `voice_id` string, nullable
  - `voice_integration_id` integer, nullable
  - `voice_model` string, nullable
  - `voice_name` string, nullable
  - `voice_similarity` number, nullable
  - `voice_speed` number, nullable
  - `voice_stability` number, nullable
  - `voice_style` number, nullable

## Other responses

- `404`: Not Found
- `422`: Unprocessable Entity

---

[API](https://skmtc.dev/avatarfactory/apis/avatarfactory-api.md) · [All operations](https://skmtc.dev/avatarfactory/apis/avatarfactory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/avatarfactory/apis/avatarfactory-api/revisions/66fc7aa3f296?raw)
