typefile
{
"face_image": "https://replicate.delivery/pbxt/MlYeEa5wsgHEWcw9jVYmFXGJQAsZia8polOhuLvjUtKlnSrt/guy.webp",
"face_image_b": "https://replicate.delivery/pbxt/NNdXExUtOHwiz9NA5K6l1u2hymcBJ14gyzupGgRP3fgBySOk/image%20%2818%29.png",
"prompt": "at the Met Gala, dressed in very fancy outfits, captured in a full body shot",
"user_b_gender": "female",
"user_gender": "male",
"workflow_type": "HyperRealistic-likeness"
}npm install replicate
REPLICATE_API_TOKEN environment variable:export REPLICATE_API_TOKEN=r8_ORJ**********************************
This is your API token. Keep it to yourself.
import Replicate from "replicate";
import fs from "node:fs";
const replicate = new Replicate({
auth: process.env.REPLICATE_API_TOKEN,
});
Run easel/ai-avatars using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
const input = {
face_image: "https://replicate.delivery/pbxt/MlYeEa5wsgHEWcw9jVYmFXGJQAsZia8polOhuLvjUtKlnSrt/guy.webp",
face_image_b: "https://replicate.delivery/pbxt/NNdXExUtOHwiz9NA5K6l1u2hymcBJ14gyzupGgRP3fgBySOk/image%20%2818%29.png",
prompt: "at the Met Gala, dressed in very fancy outfits, captured in a full body shot",
user_b_gender: "female",
user_gender: "male",
workflow_type: "HyperRealistic-likeness"
};
const output = await replicate.run("easel/ai-avatars", { input });
// To access the file URL:
console.log(output.url()); //=> "http://example.com"
// To write the file to disk:
fs.writeFile("my-image.png", output);
To learn more, take a look at the guide on getting started with Node.js.
pip install replicate
REPLICATE_API_TOKEN environment variable:export REPLICATE_API_TOKEN=r8_ORJ**********************************
This is your API token. Keep it to yourself.
import replicate
Run easel/ai-avatars using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
output = replicate.run(
"easel/ai-avatars",
input={
"face_image": "https://replicate.delivery/pbxt/MlYeEa5wsgHEWcw9jVYmFXGJQAsZia8polOhuLvjUtKlnSrt/guy.webp",
"face_image_b": "https://replicate.delivery/pbxt/NNdXExUtOHwiz9NA5K6l1u2hymcBJ14gyzupGgRP3fgBySOk/image%20%2818%29.png",
"prompt": "at the Met Gala, dressed in very fancy outfits, captured in a full body shot",
"user_b_gender": "female",
"user_gender": "male",
"workflow_type": "HyperRealistic-likeness"
}
)
# To access the file URL:
print(output.url())
#=> "http://example.com"
# To write the file to disk:
with open("my-image.png", "wb") as file:
file.write(output.read())
To learn more, take a look at the guide on getting started with Python.
REPLICATE_API_TOKEN environment variable:export REPLICATE_API_TOKEN=r8_ORJ**********************************
This is your API token. Keep it to yourself.
Run easel/ai-avatars using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
curl -s -X POST \
-H "Authorization: Bearer $REPLICATE_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: wait" \
-d $'{
"input": {
"face_image": "https://replicate.delivery/pbxt/MlYeEa5wsgHEWcw9jVYmFXGJQAsZia8polOhuLvjUtKlnSrt/guy.webp",
"face_image_b": "https://replicate.delivery/pbxt/NNdXExUtOHwiz9NA5K6l1u2hymcBJ14gyzupGgRP3fgBySOk/image%20%2818%29.png",
"prompt": "at the Met Gala, dressed in very fancy outfits, captured in a full body shot",
"user_b_gender": "female",
"user_gender": "male",
"workflow_type": "HyperRealistic-likeness"
}
}' \
https://api.replicate.com/v1/models/easel/ai-avatars/predictions
To learn more, take a look at Replicate’s HTTP API reference docs.
{
"id": "ehdcdh1gydrme0crfn1tyn88n4",
"model": "easel/ai-avatars",
"version": "hidden",
"input": {
"face_image": "https://replicate.delivery/pbxt/MlYeEa5wsgHEWcw9jVYmFXGJQAsZia8polOhuLvjUtKlnSrt/guy.webp",
"face_image_b": "https://replicate.delivery/pbxt/NNdXExUtOHwiz9NA5K6l1u2hymcBJ14gyzupGgRP3fgBySOk/image%20%2818%29.png",
"prompt": "at the Met Gala, dressed in very fancy outfits, captured in a full body shot",
"user_b_gender": "female",
"user_gender": "male",
"workflow_type": "HyperRealistic-likeness"
},
"logs": "🎯 PREDICT METHOD CALLED - Starting avatar prediction...\nRunning avatar prediction...\n📁 Created temporary output directory: /tmp/cog_output_89m04e11\n✅ Loaded face_image: 696602 bytes\n✅ Loaded face_image_b: 1576648 bytes\n🎯 Using avatar workflow: mm_txt2img_multiplayer_sd35_local_codeformer_replicate_caption\n🔗 Making ComfyUI request to 127.0.0.1:7778\n📋 Payload keys: ['seed', 'batch_size', 'image1', 'scene_type', 'user_desc', 'prompt', 'generation_key', 'image2', 'user1_desc']\n✅ WebSocket connection established\n🎯 Looking for workflow_id: mm_txt2img_multiplayer_sd35_local_codeformer_replicate_caption\n📜 Using workflow: mm_txt2img_multiplayer_sd35_local_codeformer_replicate_caption\n📋 Workflow has 71 nodes\n🔧 Setting parameters from payload...\n⚠️ Key seed not in workflow.input_ids, trying anyway\n⚠️ Key batch_size not in workflow.input_ids, trying anyway\n✅ Setting image1 = <class 'str'> (length: 928804)\n⚠️ Key scene_type not in workflow.input_ids, trying anyway\n✅ Setting user_desc = <class 'str'> (length: 4)\n✅ Setting prompt = <class 'str'> (length: 76)\n✅ Setting generation_key = <class 'str'> (length: 20)\n✅ Setting image2 = <class 'str'> (length: 2102200)\n✅ Setting user1_desc = <class 'str'> (length: 6)\n🎲 Using seed: 2952427764\n🔄 Calling get_images with workflow...\n🎯 Starting get_images with WebSocket: <websocket._core.WebSocket object at 0x7d6898fd5c90>\n📋 Converted ComfyUIWorkflow to dict with 71 nodes\n🔄 Queuing prompt to 127.0.0.1:7778 with client_id: 65cbf8a5-2e8c-44b5-92ae-a2ed5ec2fb54\n🔗 Attempting to queue prompt to 127.0.0.1:7778 with client_id: 65cbf8a5-2e8c-44b5-92ae-a2ed5ec2fb54\n📤 Sending prompt data (size: 3048288 bytes)\n✅ Successfully queued prompt, got response: {'prompt_id': '896c9535-bc84-47b7-9d5b-bfa9d3e46e7e', 'number': 3, 'node_errors': {}}\n✅ Successfully queued prompt with ID: 896c9535-bc84-47b7-9d5b-bfa9d3e46e7e\n🔄 Starting to receive messages from WebSocket...\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: status\n📨 Received message type: status\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: status\n📨 Received message type: status\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: execution_start\n🚀 Execution started\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: execution_cached\n💾 Execution cached\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executed\n🔄 Processing executed message\n🔄 Executing node: 299005 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executed\n🔄 Processing executed message\n🔄 Executing node: 299006 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 133 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 198 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 283 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 282 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 281 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 279 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 232 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 278 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 277 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 275 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 233 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 132 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 201 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 121 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 15 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 285 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 274 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 58 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 30 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 252 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 28 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 25 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 29 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 31 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 55 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 43 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 50 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: progress\n📊 Progress update: {'value': 1, 'max': 4, 'prompt_id': '896c9535-bc84-47b7-9d5b-bfa9d3e46e7e', 'node': '50'}\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: progress\n📊 Progress update: {'value': 2, 'max': 4, 'prompt_id': '896c9535-bc84-47b7-9d5b-bfa9d3e46e7e', 'node': '50'}\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: progress\n📊 Progress update: {'value': 3, 'max': 4, 'prompt_id': '896c9535-bc84-47b7-9d5b-bfa9d3e46e7e', 'node': '50'}\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: progress\n📊 Progress update: {'value': 4, 'max': 4, 'prompt_id': '896c9535-bc84-47b7-9d5b-bfa9d3e46e7e', 'node': '50'}\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 52 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 59 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 64 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 81 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 114 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 100 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 254 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 77 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 75 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 80 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 91 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 93 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 92 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: progress\n📊 Progress update: {'value': 1, 'max': 4, 'prompt_id': '896c9535-bc84-47b7-9d5b-bfa9d3e46e7e', 'node': '92'}\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: progress\n📊 Progress update: {'value': 2, 'max': 4, 'prompt_id': '896c9535-bc84-47b7-9d5b-bfa9d3e46e7e', 'node': '92'}\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: progress\n📊 Progress update: {'value': 3, 'max': 4, 'prompt_id': '896c9535-bc84-47b7-9d5b-bfa9d3e46e7e', 'node': '92'}\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: progress\n📊 Progress update: {'value': 4, 'max': 4, 'prompt_id': '896c9535-bc84-47b7-9d5b-bfa9d3e46e7e', 'node': '92'}\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 98 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 102 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 105 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 116 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 191 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 199 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 200 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n🔄 Executing node: 243 (class: None)\n📊 Output data keys: None\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executed\n🔄 Processing executed message\n🔄 Executing node: 243 (class: None)\n📊 Output data keys: ['API_OUT', 'meta']\n📸 Found API_OUT with 1 images\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: execution_success\n📨 Received message type: execution_success\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: status\n📨 Received message type: status\n📡 Waiting for WebSocket message...\n📨 Received message type: <class 'str'>\n📋 Parsed message type: executing\n🔄 Processing executing message\n✅ Execution completed\n🎯 get_images returning 1 images\n✅ Successfully got 1 images from ComfyUI\n🎯 Returning response with 1 images\n🎯 Returning 1 files from predict\n[1] /tmp/cog_output_89m04e11/output.1.png (type: <class 'str'>)",
"output": "https://replicate.delivery/xezq/DfVaD9XBvB2dEKAAWuoHwwM5ysCdqDX6BLhWsKDlwlx1mDkKA/output.1.png",
"data_removed": false,
"error": null,
"source": "web",
"status": "succeeded",
"created_at": "2025-08-06T02:43:32.211Z",
"started_at": "2025-08-06T02:43:32.218372Z",
"completed_at": "2025-08-06T02:43:55.803954Z",
"urls": {
"cancel": "https://api.replicate.com/v1/predictions/ehdcdh1gydrme0crfn1tyn88n4/cancel",
"get": "https://api.replicate.com/v1/predictions/ehdcdh1gydrme0crfn1tyn88n4",
"stream": "https://stream.replicate.com/v1/files/bcwr-jizghfkq5uyjz2fnfokvlsay7bwsmrk3haku3zj5snkjsoigwcia",
"web": "https://replicate.com/p/ehdcdh1gydrme0crfn1tyn88n4"
},
"metrics": {
"image_count": 1,
"predict_time": 23.585582376,
"total_time": 23.592954
}
}

