Complete guide to integrate with OH Digital Twin APIs
RESTful API for AI character creation and media generation. All requests require authentication.
https://api.oh.xyzInclude your API key in the X-API-Key header for all requests.
X-API-Key: your_api_key_hereAPI keys are issued to approved partners only. Contact support for access.
All errors return JSON with an error message and may include additional diagnostics:
{
"error": "Error description",
"message": "Optional human-readable details",
"suggestion": "Optional next step"
}Room Management
Reuse rooms for conversations. Don't create new rooms per message—this maintains context.
Presigned URLs
URLs expire quickly. Download generated content immediately and store in your infrastructure.
Error Handling
Always check status codes. Implement retry logic for transient errors (5xx).
1. Submit Request
POST to /api/v1/images. Store the job_id and presigned_url.
2. Poll Status
GET /api/v1/jobs/{job_id}/status every 2-5s until status is completed or failed.
3. Download Result
Fetch from presigned URL when completed. Set max polling time (5min) to avoid infinite loops.
Prompts are automatically screened. Policy violations return 400 with moderation error.
Customer library endpoints return the authenticated customer's saved characters and digital twins. Authenticate with your API key in the x-api-key header.
The OH API provides support for explicit adult content generation across all 25 currently available video types for video generation. The examples below use only image prompts that have been playground tested, with matching video prompt examples shown when available. All explicit content generation is restricted to verified adult platform partners and requires a validated API key with adult content permissions enabled.
Prompt enhancement is available for video generation
Set prompt_enhancement to true when creating a video to have the API expand shorter prompts into a more descriptive generation prompt before rendering.
Image Prompt
Photograph of the same woman. The woman is naked and kneeling in front of a man. The woman is performing oral sex on the man's erect penis. She is looking up to the man while sucking his penis.
Video Prompt
Explicit deep blowjob animation, full detailed view of both man and woman. A beautiful young woman kneels submissively on the carpet in a luxurious hotel bedroom, passionately sucking a muscular man's rock-hard rigid fully erect penis. She bobs her head deeply from tip to base with visible throat bulge on every stroke, thick glossy saliva pouring from her stretched lips and forming long dripping strings that coat the shaft and balls. Excessive messy spit play, saliva running down her chin onto her breasts. Intense upward eye contact with teary eyes and lustful expression. The penis stays steel-hard, throbbing, and maximally erect the entire clip — never soft, never limp, prominent bulging veins, swollen glistening glans. Smooth 24fps animation, hyper-realistic saliva physics, natural motion blur, glossy wet surfaces, flawless anatomy, cinematic hotel lighting, masterpiece quality.
Image Prompt
Photograph of the same woman. The woman is naked and kneeling in front of a man. Pov shot from the man's persepctive. The woman is performing oral sex on the man's erect penis. She is looking up to the man while sucking his penis
Video Prompt
Explicit blowjob animation, full detailed view of both man and woman. A beautiful young woman kneels and sucks a muscular man's rock-hard rigid fully erect penis deeply with rhythmic bobbing and visible throat bulge. Thick saliva drips heavily down the shaft. Intense upward eye contact. The penis stays steel-hard and throbbing the entire clip. Smooth 24fps animation, hyper-realistic saliva physics, flawless anatomy, masterpiece quality.
Image Prompt
Photograph of the same woman. She is naked in a gangbang bukkake scene surrounded by five men standing around her. There are five erect penises visible, she is holding two, each in her hands. She kneels in the center with semen covering her face, breasts, and mouth open. She is looking into the camera with a satisfied expression. The background is an underground club with red velvet background and red lights.
Image Prompt
Photograph of the same woman. The woman is naked and she is on top of a naked men. The man sits on a red leather sofa. The woman is on top of the man. She is riding him in cogwirl position. The woman grinds his vagina into the mans erect penis. The woman's ass is visible, she is facing the man. The woman is looking back at the camera.
Video Prompt
Intense cowgirl sex animation, full detailed view of both man and woman. A beautiful young woman straddles a muscular man lying on his back on a large king bed, riding his rock-hard rigid fully erect penis with powerful up-and-down bouncing. She lifts her hips high until only the swollen head stretches her labia, then slams back down taking him balls-deep. Clear visible in-and-out penetration, stretched labia gripping the shaft, shiny wetness and creamy fluids coating the cock. Her full breasts bounce heavily with realistic jiggle and rebound, erect nipples. Strong downward eye contact, ecstatic open-mouth expression. The penis stays steel-hard, throbbing, and maximally erect the entire clip — never soft. Smooth 24fps animation, realistic breast and hip physics, glossy wetness, natural motion blur, flawless anatomy, luxurious hotel lighting, masterpiece quality.
Image Prompt
Photograph of the same woman. She is naked and lying on her back on a bed. Her legs are spread. There is a male's head between her legs and he is licking the woman's vagina. Only the male's head is visible.
Video Prompt
Intense cunnilingus animation, full detailed view of both man and woman. A beautiful young woman lies on her back on a large hotel bed, legs spread maximally wide and pulled back toward her chest. A strong muscular man is positioned between her thighs, eagerly performing cunnilingus with deep tongue strokes, licking and sucking her swollen clit and wet labia. Visible arousal fluids dripping down his chin and onto the sheets. The woman's body arches and trembles in pleasure, full breasts heaving and bouncing naturally, mouth open moaning loudly, eyes half-closed in ecstasy. The man's rock-hard rigid fully erect penis is clearly visible below, steel-hard and throbbing — never soft. Smooth 24fps animation, hyper-realistic tongue and pussy physics, glossy wetness, realistic breast movement, flawless anatomy, warm hotel lighting, masterpiece quality.
Image Prompt
Photograph of the same woman. She is naked and on top of a man. The woman's vagina is positioned above the mans' mouth. The man is licking the woman's vagina while she is sitting on her face. The man lies on his back on a bed. She is looking into the camera with intense eyes.
Image Prompt
Intimate solo image of a beautiful woman lying on her back with legs spread wide, masturbating with one hand touching her wet vulva and clitoris while her other hand rests on her breast. Her face is visible and turned slightly toward the camera with a soft, sensual, glamorous expression. No other person and no penis are present in the frame.
Image Prompt
Explicit group sex: a beautiful woman on all fours between multiple men, face soft and glamorous. She takes a large thick erect penis in her mouth while another man enters her from behind in doggy-style; more men frame her with erect penises visible, her face never hidden. She looks up with a sensual expression.
Image Prompt
Photograph of the same woman. She is naked and giving a handjob to a man's erect penis. She is kneeling in front of him with both hands wrapped around his shaft, stroking firmly. She is looking into the camera with a seductive smile. The background is a steamy hot tub on a rooftop at night with city skyline lights, bubbles rising, and steam in the air.
Video Prompt
Intense handjob animation, full detailed view of both man and woman. A beautiful young woman kneels and uses both hands to firmly stroke a muscular man's rock-hard rigid fully erect penis with fast rhythmic motions. Fingers wrapped tightly around the thick shaft, sliding up and down the full length, twisting slightly, palms and fingers glossy with precum. Intense upward eye contact with desire. The penis stays steel-hard and throbbing the entire clip — never soft. Smooth 24fps animation, realistic hand physics, glossy wetness, flawless anatomy, masterpiece quality.
Image Prompt
Photograph of the same woman. The woman is lying on her back naked on a red sports car, with her legs spread. A man is positioned above her, and he is inserting his erect penis into the woman's vagina. Only the man's penis is visible. POV shot from the man's perspective
Video Prompt
Hard intense missionary sex animation, full detailed view of both man and woman. A beautiful young woman lies on her back on a large king-size bed, legs spread wide and pulled back toward her chest. A strong muscular man is on top of her, thrusting his rock-hard rigid fully erect penis deep into her vagina with powerful in-and-out strokes — pulling out almost completely then slamming balls-deep with force. Heavy creamy wetness coats the shaft, labia stretched and gripping tightly. The woman's full breasts bounce heavily up and down with realistic physics, mouth open moaning, strong eye contact. The penis stays steel-hard, throbbing, and maximally erect the entire clip — never soft. Smooth 24fps animation, realistic breast physics and vaginal grip, glossy wetness, flawless anatomy, luxurious hotel lighting, masterpiece quality.
Image Prompt
Photograph of the same woman. The woman is naked, she has small breasts and shaved pubes. The woman is sitting on a naked man. The man is sitting on a red couch. The man is holding up the naked woman's legs in the air, exposing her vagina. The man is penetrating the womans vagina with his erect penis, while he is holding the woman's legs in the air. The man is behind the woman, his face is not visible.
Video Prompt
Intense reverse cowgirl sex animation, full detailed view of both man and woman. A beautiful young woman straddles a muscular man facing away, riding his rock-hard rigid fully erect penis with strong up-and-down bouncing. Clear visible in-and-out penetration from behind, ass cheeks spreading and rippling, heavy wetness. Breasts bouncing forward. The penis stays steel-hard and throbbing the entire clip. Smooth 24fps animation, realistic ass and breast physics, glossy wetness, flawless anatomy, masterpiece quality.
Image Prompt
External three-quarter view of a beautiful woman having standing sex from behind. She stands leaning slightly forward while a man stands directly behind her, gripping her waist as his large thick erect penis enters her vagina from behind. Her back is arched, bum visible, and the exact vaginal penetration point is clearly visible between her thighs. She turns her face partly toward the camera with a soft, sensual, glamorous expression. This is explicit vaginal penetrative sex.
Video Prompt
Hard standing sex from behind animation, full view of both man and woman. A beautiful young woman is bent slightly forward while a muscular man stands behind her, thrusting his rock-hard rigid fully erect penis into her vagina with fast rhythmic strokes. Clear in-and-out penetration, legs spread, breasts bouncing vertically with every impact. Strong eye contact over the shoulder. The penis stays steel-hard and throbbing the entire clip. Smooth 24fps animation, realistic motion and breast physics, glossy wetness, flawless anatomy, masterpiece quality.
Image Prompt
Photograph of the same woman. She is naked performing oral sex on one man's erect penis, who is in front of her. Another man is behind her and penetrates her vagina from behind in a doggy position. She is naked and kneeling on all fours.
Video Prompt
Intense MMF threesome animation, full detailed view of all three people. A beautiful young woman is between two muscular men on a large hotel bed. One man thrusts his rock-hard rigid fully erect penis deep into her vagina from behind with powerful strokes, while the second man receives a deep blowjob from her. Clear in-and-out motion in her pussy, breasts bouncing wildly from dual stimulation, ecstatic expressions. Both penises stay steel-hard and throbbing the entire clip — never soft. Smooth 24fps animation, glossy wetness, realistic body physics, flawless anatomy, luxurious hotel lighting, masterpiece quality.
Image Prompt
Photograph of the same woman. Close up shot of the womans breasts. The woman is naked and kneeling in front of a man. Her hands push her breasts together. The mans erect penis is pressed against her cleavage. POV shot from the man's perspective. The man's penis is in between the woman's breasts. She is also holding her breasts and the penis.
Video Prompt
Intense titjob animation, full detailed view of both man and woman. A beautiful young woman presses her full breasts together around a muscular man's rock-hard rigid fully erect penis, sliding them up and down the lubricated shaft in rhythmic motion. Erect nipples brush the head, skin glossy with lubrication. Upward aroused eye contact. The penis stays steel-hard and throbbing the entire clip — never soft. Smooth 24fps animation, realistic breast physics, glossy wetness, flawless anatomy, masterpiece quality.
Not a developer? No problem. The prompt below was written for Lovable, but it works with any AI-powered vibe coding tool — Bolt, Cursor, v0, or similar. Paste it in and the tool will generate a starting point that replicates the Oh API Playground you see at api.oh.xyz/playground. It covers all five generation modes (Chat, Image, Video, Audio, Cam), character selection, async job polling, and the dark-theme UI. This is a starting point, not a complete implementation — you'll likely need to iterate with your vibe coding tool to refine the UI and add any custom features you need.
Build a web app called "Oh API Playground" that lets users test the Oh API (https://api.oh.xyz).
## Design
- Dark theme: background #0f0a10, sidebar #1a0d1c, cards #110113, accent orange #fc7a1d, purple #913CDD
- Left sidebar nav with sections: Dashboard, APIs, Documentation, Playground (highlighted), Characters, Usage Analytics, Pricing, Payments, Account, Contact
- Clean, modern, mobile-responsive layout
## Core Feature: Playground
The main content area has a tab bar at the top with 5 tabs: Chat | Image | Video | Audio | Cam
### API Key Input
At the top of the playground, a text input field labelled "Your API Key" where users paste their Oh API key (X-API-Key header). Store it in localStorage.
---
### TAB 1: Chat
**Endpoint:** POST https://api.oh.xyz/api/v1/rooms (create room), then POST https://api.oh.xyz/api/v1/text
**Left panel — Character list:**
- Fetch characters from GET https://api.oh.xyz/api/v1/characters
- Show each as a card with: avatar image (character.profile_image_url), name + age, occupation, badge showing "ORIGINAL" or "DIGITAL TWIN" (styled differently)
- Clicking a character selects it and shows their image on the right with "Start chatting with [name]" text
**Right panel — Chat interface:**
- Shows selected character's image at top
- Chat message history (bubbles, user right / character left)
- Text input at bottom with send button
- On send: POST to /api/v1/text with { room_id, character_id, message }
- Response displays character's reply
**Flow:**
1. User selects character
2. App creates a room: POST /api/v1/rooms with { character_id } → gets room_id
3. User types message → POST /api/v1/text with { room_id, character_id, message } → display reply
---
### TAB 2: Image
**Endpoint:** POST https://api.oh.xyz/api/v1/images (async)
**UI:**
- Character selector (same list as Chat tab)
- Text prompt input field
- "Generate Image" button
- On submit: POST { character_id, prompt } → returns { job_id, presigned_url }
- Poll GET https://api.oh.xyz/api/v1/jobs/{job_id}/status every 2 seconds
- Show loading spinner while polling (status: queued/processing)
- When status = "completed", display the generated image from presigned_url
---
### TAB 3: Video
**Endpoint:** POST https://api.oh.xyz/api/v1/videos/create (async)
**UI:**
- Two sub-modes: "Text to Video" and "Image to Video" (toggle)
- Text to Video: character selector + prompt input
- Image to Video: image URL input + prompt input
- "Generate Video" button
- Same async polling pattern as Image tab
- When complete, display video player with the result URL
---
### TAB 4: Audio
**Endpoint:** POST https://api.oh.xyz/api/v1/audio
**UI:**
- Character selector
- Text input for what the character should say
- "Generate Audio" button
- Async polling same as Image/Video
- When complete, show an audio player with play button
---
### TAB 5: Cam
**Endpoint:** POST https://api.oh.xyz/api/v1/cam/create
**UI:**
- Character selector
- Input for "Your webhook URL" (where Cam will send events)
- "Create Cam Session" button
- On success show: Session ID, Avatar URL (clickable link), Auth Token
- Show example webhook payloads for LOGIN, CHAT, LOGOUT events (copy buttons)
---
## API Details
**Base URL:** https://api.oh.xyz
**Auth header on all requests:**
X-API-Key: {user's api key}
**Key endpoints:**
- GET /api/v1/characters — list all characters
- POST /api/v1/rooms — create chat room { character_id }
- POST /api/v1/text — send chat { room_id, character_id, message }
- POST /api/v1/images — generate image { character_id, prompt } → async
- POST /api/v1/videos/create — generate video { character_id?, image_url?, prompt } → async
- POST /api/v1/audio — generate audio { character_id, text } → async
- GET /api/v1/jobs/{job_id}/status — poll job { status, presigned_url when done }
- POST /api/v1/cam/create — create cam session { characterId, restEndpointUrl, apiKey }
**Async pattern for Image/Video/Audio:**
1. POST to endpoint → get { job_id, presigned_url }
2. Poll GET /api/v1/jobs/{job_id}/status every 2 seconds
3. Stop when status = "completed" or "failed"
4. Use presigned_url to display result
**Character object shape:**
{ character_id, name, age, occupation, profile_image_url, type: "ORIGINAL"|"DIGITAL_TWIN" }
---
## Error Handling
- Show clear error messages if API key is missing or invalid
- Show clear diagnostics for malformed requests, invalid endpoints, and insufficient credit
- Surface the backend error body whenever a request fails
- Show error if generation fails
- Timeout polling after 5 minutes
## No backend needed — all API calls direct from browser using the user's API key.Tip: After pasting the prompt, enter your Oh API key when the app asks for it. You can find your API key on the Keys page.