typefile
{
"image": "https://replicate.delivery/pbxt/O0abEcdlhyCN7KrUAULW93COhkqadO5vTJN08kRqjHo7tfAw/0_1.webp",
"max_value": 15,
"min_value": -15,
"size": 256,
"step": 3
}npm install replicate
REPLICATE_API_TOKEN environment variable:export REPLICATE_API_TOKEN=r8_RBk**********************************
This is your API token. Keep it to yourself.
import Replicate from "replicate";
const replicate = new Replicate({
auth: process.env.REPLICATE_API_TOKEN,
});
Run kylan02/face-looker using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
const input = {
image: "https://replicate.delivery/pbxt/O0abEcdlhyCN7KrUAULW93COhkqadO5vTJN08kRqjHo7tfAw/0_1.webp",
max_value: 15,
min_value: -15,
size: 256,
step: 3
};
const output = await replicate.run("kylan02/face-looker", { input });
console.log(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_RBk**********************************
This is your API token. Keep it to yourself.
import replicate
Run kylan02/face-looker using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
output = replicate.run(
"kylan02/face-looker",
input={
"image": "https://replicate.delivery/pbxt/O0abEcdlhyCN7KrUAULW93COhkqadO5vTJN08kRqjHo7tfAw/0_1.webp",
"max_value": 15,
"min_value": -15,
"size": 256,
"step": 3
}
)
print(output)
To learn more, take a look at the guide on getting started with Python.
REPLICATE_API_TOKEN environment variable:export REPLICATE_API_TOKEN=r8_RBk**********************************
This is your API token. Keep it to yourself.
Run kylan02/face-looker 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": {
"image": "https://replicate.delivery/pbxt/O0abEcdlhyCN7KrUAULW93COhkqadO5vTJN08kRqjHo7tfAw/0_1.webp",
"max_value": 15,
"min_value": -15,
"size": 256,
"step": 3
}
}' \
https://api.replicate.com/v1/models/kylan02/face-looker/predictions
To learn more, take a look at Replicate’s HTTP API reference docs.
Object output with 3 properties
{
"id": "5v7tkk899drmc0ctafwthrfwbw",
"model": "kylan02/face-looker",
"version": "hidden",
"input": {
"image": "https://replicate.delivery/pbxt/O0abEcdlhyCN7KrUAULW93COhkqadO5vTJN08kRqjHo7tfAw/0_1.webp",
"max_value": 15,
"min_value": -15,
"size": 256,
"step": 3
},
"logs": "Generating 121 images (11x11 grid)...\nProcessing batch 1/13 (10 images)...\nGenerated image for pupil_x=-15.0, pupil_y=-15.0\nGenerated image for pupil_x=-12.0, pupil_y=-15.0\nGenerated image for pupil_x=-9.0, pupil_y=-15.0\nGenerated image for pupil_x=-6.0, pupil_y=-15.0\nGenerated image for pupil_x=-3.0, pupil_y=-15.0\nGenerated image for pupil_x=0.0, pupil_y=-15.0\nGenerated image for pupil_x=3.0, pupil_y=-15.0\nGenerated image for pupil_x=6.0, pupil_y=-15.0\nGenerated image for pupil_x=9.0, pupil_y=-15.0\nGenerated image for pupil_x=12.0, pupil_y=-15.0\nProcessing batch 2/13 (10 images)...\nGenerated image for pupil_x=15.0, pupil_y=-15.0\nGenerated image for pupil_x=-15.0, pupil_y=-12.0\nGenerated image for pupil_x=-12.0, pupil_y=-12.0\nGenerated image for pupil_x=-9.0, pupil_y=-12.0\nGenerated image for pupil_x=-6.0, pupil_y=-12.0\nGenerated image for pupil_x=-3.0, pupil_y=-12.0\nGenerated image for pupil_x=0.0, pupil_y=-12.0\nGenerated image for pupil_x=3.0, pupil_y=-12.0\nGenerated image for pupil_x=6.0, pupil_y=-12.0\nGenerated image for pupil_x=9.0, pupil_y=-12.0\nProcessing batch 3/13 (10 images)...\nGenerated image for pupil_x=12.0, pupil_y=-12.0\nGenerated image for pupil_x=15.0, pupil_y=-12.0\nGenerated image for pupil_x=-15.0, pupil_y=-9.0\nGenerated image for pupil_x=-12.0, pupil_y=-9.0\nGenerated image for pupil_x=-9.0, pupil_y=-9.0\nGenerated image for pupil_x=-6.0, pupil_y=-9.0\nGenerated image for pupil_x=-3.0, pupil_y=-9.0\nGenerated image for pupil_x=0.0, pupil_y=-9.0\nGenerated image for pupil_x=3.0, pupil_y=-9.0\nGenerated image for pupil_x=6.0, pupil_y=-9.0\nProcessing batch 4/13 (10 images)...\nGenerated image for pupil_x=9.0, pupil_y=-9.0\nGenerated image for pupil_x=12.0, pupil_y=-9.0\nGenerated image for pupil_x=15.0, pupil_y=-9.0\nGenerated image for pupil_x=-15.0, pupil_y=-6.0\nGenerated image for pupil_x=-12.0, pupil_y=-6.0\nGenerated image for pupil_x=-9.0, pupil_y=-6.0\nGenerated image for pupil_x=-6.0, pupil_y=-6.0\nGenerated image for pupil_x=-3.0, pupil_y=-6.0\nGenerated image for pupil_x=0.0, pupil_y=-6.0\nGenerated image for pupil_x=3.0, pupil_y=-6.0\nProcessing batch 5/13 (10 images)...\nGenerated image for pupil_x=6.0, pupil_y=-6.0\nGenerated image for pupil_x=9.0, pupil_y=-6.0\nGenerated image for pupil_x=12.0, pupil_y=-6.0\nGenerated image for pupil_x=15.0, pupil_y=-6.0\nGenerated image for pupil_x=-15.0, pupil_y=-3.0\nGenerated image for pupil_x=-12.0, pupil_y=-3.0\nGenerated image for pupil_x=-9.0, pupil_y=-3.0\nGenerated image for pupil_x=-6.0, pupil_y=-3.0\nGenerated image for pupil_x=-3.0, pupil_y=-3.0\nGenerated image for pupil_x=0.0, pupil_y=-3.0\nProcessing batch 6/13 (10 images)...\nGenerated image for pupil_x=3.0, pupil_y=-3.0\nGenerated image for pupil_x=6.0, pupil_y=-3.0\nGenerated image for pupil_x=9.0, pupil_y=-3.0\nGenerated image for pupil_x=12.0, pupil_y=-3.0\nGenerated image for pupil_x=15.0, pupil_y=-3.0\nGenerated image for pupil_x=-15.0, pupil_y=0.0\nGenerated image for pupil_x=-12.0, pupil_y=0.0\nGenerated image for pupil_x=-9.0, pupil_y=0.0\nGenerated image for pupil_x=-6.0, pupil_y=0.0\nGenerated image for pupil_x=-3.0, pupil_y=0.0\nProcessing batch 7/13 (10 images)...\nGenerated image for pupil_x=0.0, pupil_y=0.0\nGenerated image for pupil_x=3.0, pupil_y=0.0\nGenerated image for pupil_x=6.0, pupil_y=0.0\nGenerated image for pupil_x=9.0, pupil_y=0.0\nGenerated image for pupil_x=12.0, pupil_y=0.0\nGenerated image for pupil_x=15.0, pupil_y=0.0\nGenerated image for pupil_x=-15.0, pupil_y=3.0\nGenerated image for pupil_x=-12.0, pupil_y=3.0\nGenerated image for pupil_x=-9.0, pupil_y=3.0\nGenerated image for pupil_x=-6.0, pupil_y=3.0\nProcessing batch 8/13 (10 images)...\nGenerated image for pupil_x=-3.0, pupil_y=3.0\nGenerated image for pupil_x=0.0, pupil_y=3.0\nGenerated image for pupil_x=3.0, pupil_y=3.0\nGenerated image for pupil_x=6.0, pupil_y=3.0\nGenerated image for pupil_x=9.0, pupil_y=3.0\nGenerated image for pupil_x=12.0, pupil_y=3.0\nGenerated image for pupil_x=15.0, pupil_y=3.0\nGenerated image for pupil_x=-15.0, pupil_y=6.0\nGenerated image for pupil_x=-12.0, pupil_y=6.0\nGenerated image for pupil_x=-9.0, pupil_y=6.0\nProcessing batch 9/13 (10 images)...\nGenerated image for pupil_x=-6.0, pupil_y=6.0\nGenerated image for pupil_x=-3.0, pupil_y=6.0\nGenerated image for pupil_x=0.0, pupil_y=6.0\nGenerated image for pupil_x=3.0, pupil_y=6.0\nGenerated image for pupil_x=6.0, pupil_y=6.0\nGenerated image for pupil_x=9.0, pupil_y=6.0\nGenerated image for pupil_x=12.0, pupil_y=6.0\nGenerated image for pupil_x=15.0, pupil_y=6.0\nGenerated image for pupil_x=-15.0, pupil_y=9.0\nGenerated image for pupil_x=-12.0, pupil_y=9.0\nProcessing batch 10/13 (10 images)...\nGenerated image for pupil_x=-9.0, pupil_y=9.0\nGenerated image for pupil_x=-6.0, pupil_y=9.0\nGenerated image for pupil_x=-3.0, pupil_y=9.0\nGenerated image for pupil_x=0.0, pupil_y=9.0\nGenerated image for pupil_x=3.0, pupil_y=9.0\nGenerated image for pupil_x=6.0, pupil_y=9.0\nGenerated image for pupil_x=9.0, pupil_y=9.0\nGenerated image for pupil_x=12.0, pupil_y=9.0\nGenerated image for pupil_x=15.0, pupil_y=9.0\nGenerated image for pupil_x=-15.0, pupil_y=12.0\nProcessing batch 11/13 (10 images)...\nGenerated image for pupil_x=-12.0, pupil_y=12.0\nGenerated image for pupil_x=-9.0, pupil_y=12.0\nGenerated image for pupil_x=-6.0, pupil_y=12.0\nGenerated image for pupil_x=-3.0, pupil_y=12.0\nGenerated image for pupil_x=0.0, pupil_y=12.0\nGenerated image for pupil_x=3.0, pupil_y=12.0\nGenerated image for pupil_x=6.0, pupil_y=12.0\nGenerated image for pupil_x=9.0, pupil_y=12.0\nGenerated image for pupil_x=12.0, pupil_y=12.0\nGenerated image for pupil_x=15.0, pupil_y=12.0\nProcessing batch 12/13 (10 images)...\nGenerated image for pupil_x=-15.0, pupil_y=15.0\nGenerated image for pupil_x=-12.0, pupil_y=15.0\nGenerated image for pupil_x=-9.0, pupil_y=15.0\nGenerated image for pupil_x=-6.0, pupil_y=15.0\nGenerated image for pupil_x=-3.0, pupil_y=15.0\nGenerated image for pupil_x=0.0, pupil_y=15.0\nGenerated image for pupil_x=3.0, pupil_y=15.0\nGenerated image for pupil_x=6.0, pupil_y=15.0\nGenerated image for pupil_x=9.0, pupil_y=15.0\nGenerated image for pupil_x=12.0, pupil_y=15.0\nProcessing batch 13/13 (1 images)...\nGenerated image for pupil_x=15.0, pupil_y=15.0\nDownloading face_looker repository...\nSaving 121 images to face_looker/faces/...\nGenerating circular gaze video...\nBuilding video with 1080 frames...\nffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers\n built with gcc 13.2.1 (Alpine 13.2.1_git20240309) 20240309\n configuration: --pkg-config-flags=--static --extra-cflags=-fopenmp --extra-ldflags='-fopenmp -Wl,--allow-multiple-definition -Wl,-z,stack-size=2097152' --toolchain=hardened --disable-debug --disable-shared --disable-ffplay --enable-static --enable-gpl --enable-version3 --enable-fontconfig --enable-gray --enable-iconv --enable-lcms2 --enable-libaom --enable-libaribb24 --enable-libass --enable-libbluray --enable-libdav1d --enable-libdavs2 --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libjxl --enable-libkvazaar --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librabbitmq --enable-librav1e --enable-librsvg --enable-librtmp --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libuavs3d --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libvvenc --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxevd --enable-libxeve --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-openssl\n libavutil 59. 39.100 / 59. 39.100\n libavcodec 61. 19.101 / 61. 19.101\n libavformat 61. 7.100 / 61. 7.100\n libavdevice 61. 3.100 / 61. 3.100\n libavfilter 10. 4.100 / 10. 4.100\n libswscale 8. 3.100 / 8. 3.100\n libswresample 5. 3.100 / 5. 3.100\n libpostproc 58. 3.100 / 58. 3.100\nInput #0, concat, from '/tmp/concat_frames.txt':\n Duration: N/A, start: 0.000000, bitrate: N/A\n Stream #0:0: Video: webp, yuv420p(tv, bt470bg/unknown/unknown), 256x256, 25 fps, 25 tbr, 25 tbn\nStream mapping:\n Stream #0:0 -> #0:0 (webp (native) -> h264 (libx264))\nPress [q] to stop, [?] for help\n[libx264 @ 0x7c4d72cc1c00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512\n[libx264 @ 0x7c4d72cc1c00] profile High, level 2.1, 4:2:0, 8-bit\n[libx264 @ 0x7c4d72cc1c00] 264 - core 164 r3108 31e19f9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00\nOutput #0, mp4, to '/tmp/gaze_circle.mp4':\n Metadata:\n encoder : Lavf61.7.100\n Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt470bg/unknown/unknown, progressive), 256x256, q=2-31, 60 fps, 15360 tbn\n Metadata:\n encoder : Lavc61.19.101 libx264\n Side data:\n cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A\nframe= 21 fps=0.0 q=31.0 size= 0KiB time=00:00:00.31 bitrate= 1.2kbits/s dup=1 drop=115 speed=0.633x \rframe= 76 fps= 76 q=31.0 size= 0KiB time=00:00:01.23 bitrate= 0.3kbits/s dup=1 drop=223 speed=1.23x \rframe= 131 fps= 87 q=31.0 size= 0KiB time=00:00:02.15 bitrate= 0.2kbits/s dup=1 drop=334 speed=1.43x \rframe= 185 fps= 92 q=31.0 size= 0KiB time=00:00:03.05 bitrate= 0.1kbits/s dup=1 drop=443 speed=1.52x \rframe= 239 fps= 96 q=31.0 size= 0KiB time=00:00:03.95 bitrate= 0.1kbits/s dup=1 drop=552 speed=1.58x \rframe= 293 fps= 98 q=31.0 size= 0KiB time=00:00:04.85 bitrate= 0.1kbits/s dup=1 drop=659 speed=1.62x \r[out#0/mp4 @ 0x7c4d72cfe580] video:128KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 3.985881%\nframe= 364 fps=110 q=31.0 Lsize= 133KiB time=00:00:06.03 bitrate= 180.5kbits/s dup=1 drop=719 speed=1.82x \n[libx264 @ 0x7c4d72cc1c00] frame I:2 Avg QP:22.19 size: 5825\n[libx264 @ 0x7c4d72cc1c00] frame P:92 Avg QP:24.74 size: 1121\n[libx264 @ 0x7c4d72cc1c00] frame B:270 Avg QP:24.31 size: 57\n[libx264 @ 0x7c4d72cc1c00] consecutive B-frames: 0.5% 1.1% 1.6% 96.7%\n[libx264 @ 0x7c4d72cc1c00] mb I I16..4: 19.1% 52.7% 28.1%\n[libx264 @ 0x7c4d72cc1c00] mb P I16..4: 0.9% 0.9% 0.0% P16..4: 31.2% 17.2% 10.2% 0.0% 0.0% skip:39.6%\n[libx264 @ 0x7c4d72cc1c00] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 13.5% 0.5% 0.1% direct: 0.1% skip:85.8% L0:38.1% L1:60.2% BI: 1.7%\n[libx264 @ 0x7c4d72cc1c00] 8x8 transform intra:50.4% inter:59.9%\n[libx264 @ 0x7c4d72cc1c00] coded y,uvDC,uvAC intra: 39.3% 57.3% 29.0% inter: 5.3% 3.5% 0.1%\n[libx264 @ 0x7c4d72cc1c00] i16 v,h,dc,p: 57% 22% 11% 9%\n[libx264 @ 0x7c4d72cc1c00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 11% 40% 6% 4% 5% 4% 4% 5%\n[libx264 @ 0x7c4d72cc1c00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 15% 16% 7% 8% 9% 7% 7% 7%\n[libx264 @ 0x7c4d72cc1c00] i8c dc,h,v,p: 65% 15% 18% 2%\n[libx264 @ 0x7c4d72cc1c00] Weighted P-Frames: Y:0.0% UV:0.0%\n[libx264 @ 0x7c4d72cc1c00] ref P L0: 68.9% 19.7% 7.9% 3.5%\n[libx264 @ 0x7c4d72cc1c00] ref B L0: 89.1% 9.0% 1.9%\n[libx264 @ 0x7c4d72cc1c00] ref B L1: 96.1% 3.9%\n[libx264 @ 0x7c4d72cc1c00] kb/s:171.69\nVideo created: /tmp/gaze_circle.mp4\nCreating zip file...\nCreated grid (11x11), face_looker zip with 121 images, and circular gaze video",
"output": {
"grid": "https://replicate.delivery/xezq/7b0AdJlG8PacKVztqoFPtkyKotLAlHCM3ti2rvv2rVh20jZF/gaze_grid.webp",
"video": "https://replicate.delivery/xezq/7f7mybbhGrX4aimvpwSbKLfvml0fulrijztviIlVsYX1meYWB/gaze_circle.mp4",
"zip_file": "https://replicate.delivery/xezq/f6e9VYfHoGFnjITzvkaeyLb3iYCNpcLPmPnBB4l560eUb6xsC/face_looker.zip"
},
"data_removed": false,
"error": null,
"source": "web",
"status": "succeeded",
"created_at": "2025-11-05T12:23:41.131Z",
"started_at": "2025-11-05T12:23:41.605327Z",
"completed_at": "2025-11-05T12:28:10.49997Z",
"urls": {
"cancel": "https://api.replicate.com/v1/predictions/5v7tkk899drmc0ctafwthrfwbw/cancel",
"children": "https://api.replicate.com/v1/predictions/5v7tkk899drmc0ctafwthrfwbw/children",
"get": "https://api.replicate.com/v1/predictions/5v7tkk899drmc0ctafwthrfwbw",
"root": "https://api.replicate.com/v1/predictions/5v7tkk899drmc0ctafwthrfwbw",
"web": "https://replicate.com/p/5v7tkk899drmc0ctafwthrfwbw"
},
"metrics": {
"predict_time": 268.894642709,
"total_time": 269.368970054
}
}
