---
title: "Get private models with pagination"
method: GET
path: "/v1/models/private"
tags: ["Models"]
---

# Get private models with pagination

`GET /v1/models/private`

## Query parameters

- `gender` 'male' | 'female'
- `search` string
- `ethnicity` 'caucasian' | 'latina' | 'asian' | 'arab' | 'afro' | 'indian' | 'furry' | 'kemonomimi' | 'tiefling'
- `personality` 'Caregiver' | 'Sage' | 'Innocent' | 'Jester' | 'Temptress' | 'Dominant' | 'Submissive' | 'Lover' | 'Nympho' | 'Mean' | 'Confidant' | 'Experimenter'
- `age` number
- `page` number
- `pageSize` number
- `sort` 'recommended' | 'most_popular' | 'top_rated'
- `locale` string

## Response `200`

Private models retrieved successfully

- GetModelsResponseDto
  - `total` number, required — Total number of models
  - `pageSize` number, required — Number of models per page
  - `page` number, required — Current page number
  - `items` GetModelByIdResponseDto[], required — Array of models
    - `id` string, required — The model ID
    - `slug` string, required — The model URL slug
    - `name` string, required — The model name
    - `status` 'IN_PROGRESS' | 'COMPLETED' | 'FAILED', required — The model status
    - `description` string, required — The model description
    - `photo` string, required — The model photo URL
    - `avatarIcon` string — The model avatar icon URL
    - `video` string — The model video URL
    - `useVideo` boolean — Whether the model uses video
    - `isPublic` boolean, required — Whether the model is public
    - `gender` 'male' | 'female', required — The model gender
    - `age` number, required — The model age
    - `relationship` string, required — The model relationship
    - `hairColor` 'Blonde' | 'Brunette' | 'Black' | 'Red' | 'Pink' | 'Blue' | 'Violet' | 'Airtouch' | 'Black with blonde highlights' | 'Ombre', required — The model hair color
    - `hairStyle` 'Straight' | 'Braids' | 'Bangs' | 'Bun' | 'Curly' | 'Short' | 'Long' | 'Pigtails' | 'Ponytail' | 'Emo' | 'Shoulder-length' | 'Buzz' | 'Pixie' | 'Hijab' | 'Veil', required — The model hair style
    - `eyesColor` 'Blue' | 'Brown' | 'Green', required — The model eyes color
    - `ethnicity` 'caucasian' | 'latina' | 'asian' | 'arab' | 'afro' | 'indian' | 'furry' | 'kemonomimi' | 'tiefling', required — The model ethnicity
    - `buttSize` 'small' | 'medium' | 'large', required — The model butt size
    - `bodyType` 'slim' | 'average' | 'athletic' | 'chubby', required — The model body type
    - `breastType` 'small' | 'medium' | 'large' | 'xl', required — The model breast size
    - `personality` string, required — The model personality
    - `occupation` 'Massage Therapist' | 'Dentist' | 'Nutritionist' | 'Fitness Coach' | 'Artist' | 'Pharmacist' | 'Hairdresser' | 'Makeup Artist' | 'Gynecologist' | 'Writer' | 'Secretary' | 'Librarian' | 'Social Worker' | 'Fashion Designer' | 'Model' | 'Police Officer' | 'Nurse' | 'Yoga Instructor' | 'Waitress' | 'Cook' | 'Unemployed' | 'Dancer' | 'Teacher' | 'Student' | 'Life Coach' | 'Astronaut' | 'Kindergarten Teacher' | 'Soldier/Military Personnel' | 'Architect' | 'DJ' | 'Nun', required — The model occupation
    - `hobbies` string, required — The model hobbies
    - `isPro` boolean, required — Whether the model is pro
    - `isNew` boolean, required — Whether the model is new
    - `tiktokVideo` string — The model TikTok video URL
    - `onboardingImage` string — The model onboarding image URL
    - `demoModelPreviewVideo` string — Short demo clip URL (static CDN) for model card / preview in demo flows
    - `onboardingSubscriptionRewardVideoPreview` string — Still preview for onboarding subscription reward (FLUX Klein edit pipeline; static CDN image/WebP)
    - `onboardingSubscriptionRewardVideo` string — Video for onboarding subscription reward (i2v from FLUX edit; static CDN)
    - `hasDefaultScenario` boolean, required — Whether the model has its own default scenario (cover/initial message)
    - `allowedChatModes` string[], required — Chat modes this model may be started in (GEN-1386). Never empty. More than one → the web asks the user to pick before creating the chat.
    - `defaultScenarioCover` string — CDN URL for the model default scenario cover image (chat-images)
    - `headerGallery` ModelContentMediaDto[], required — Up to five ordered public profile photos for the model header. Locked paid content exposes only one teaser thumbnail.
      - `id` string, required
      - `type` 'PHOTO' | 'VIDEO', required
      - `url` string
      - `videoUrl` string
      - `previewUrl` string
      - `nsfwThumbnailUrl` string
      - `lockedCoverUrl` string
      - `duration` number
      - `order` number, required
      - `price` number, required
      - `isPurchased` boolean, required
      - `isLocked` boolean, required
    - `mediaCounts` ModelProfileMediaCountsDto, required
      - `photos` number, required
      - `videos` number, required
    - `socialRating` SocialRatingDto, required
      - `views` number, required — Number of chats created with the model
      - `likes` number, required — Number of chats with >= 2 completed attachment messages

---

[API](https://skmtc.dev/miaai/apis/backend-template-api.md) · [All operations](https://skmtc.dev/miaai/apis/backend-template-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/miaai/backend-template-api/revisions/2a8d88a5124f/schema)
