geopavlakos
HaMeR
About
HaMeR is an open-weight model from geopavlakos. Transformer-based 3D hand mesh recovery with ViTPose-H detection. It accepts text and images.
License
—
License on the weights.
Pricing
Token rates are US dollars per 1M tokens. Image rates are per 1K images. Audio rates are per 1M audio seconds.
| Rate | Price |
|---|---|
| Input / 1M | $3.90 |
| Cached input / 1M | $3.90 |
| Output / 1M | $0 |
Compare
HaMeR is one of the catalog's pose models. The table is each model's published price, size, and context.
| Model | What it does | Price | Parameters | Context |
|---|---|---|---|---|
| HaMeR | Transformer-based 3D hand mesh recovery with ViTPose-H detection. | $3.90 / 1M input | — | — |
| ViTPose+ Large | 2D human pose estimation (ViT-L, 434M). | $3.90 / 1M input | 434M | — |
Benchmarks
Published scores for HaMeR, from the HaMeR paper.
- FreiHAND F@5mm76.5
A lower score is better.
| Reading | Example |
|---|---|
| Qualitative | Clear structure, grounded in the input |
| Quantitative | FreiHAND F@5mm: 76.5. |
| Cost and performance | Lower listed rate, mid-pack latency |
Performance
Latency is the end-to-end round trip. Throughput is completion tokens divided by that time. It is a request rate, not decode speed.
Latency
275 ms
Throughput
—
Requests
52
Supported inputs
- textIgnored
A text part beside the media is accepted and ignored. A request with no media part is a
400. - image_urlYes
One per request. A second
image_urlpart is a400. - video_urlNo
Not accepted.
- document_urlNo
Not accepted.
poseis the only method.- Each detected hand returns a
left_handorright_handlabel, a detection score, a normalized bounding box, and 21 hand keypoints in OpenPose order, twice over:kpts_xyin the image plane andkpts_xyzin 3D. That is why the payload is taggedworld.pose.kptsrather thanimg.pose.kpts, which is what the 2D-only ViTPose returns.
Method parameters
| Parameter | Default | Description |
|---|---|---|
body_conf | 0.5 | Minimum confidence for the body detection that locates the hands |
hand_conf | 0.5 | Minimum confidence for a hand to be reported |
rescale_factor | 2.0 | How far the detected hand box is expanded before the mesh is fit |
include_mesh | false | Return the full MANO mesh alongside the keypoints |
Methods
Methods this model serves. Payload shapes are in the docs.
| Method | Returns |
|---|---|
| pose (default) | One entry per detected hand, with bbox_xywh, label, score, kpts_xy, and kpts_xyz |
Estimate cost
$3.90
Quick start
Call this model on the OpenAI-compatible gateway. The model id is already filled in.
Response
A single image returns the json block alone, with no wrapper:
{
"object": "world.pose.kpts",
"items": [
{
"bbox_xywh": [0.6735, 0.3556, 0.0623, 0.0938],
"label": "left_hand",
"score": 1.0,
"kpts_xy": [[0.695, 0.3822], [0.6881, 0.3928], "..."],
"kpts_xyz": [[-0.0957, 0.0064, 0.0062], [-0.1146, 0.0257, -0.0211], "..."]
}
],
"kpts_labels": ["wrist", "thumb_mcp", "thumb_pip", "thumb_dip", "thumb_tip", "..."]
}
label is the hand's laterality, left_hand or right_hand, and score is the detection confidence.
kpts_xy is normalized against the source image, so multiply by image_width and image_height for pixels. kpts_xyz is metric 3D in the model's own hand-centred frame and is not tied to image coordinates; it is the reason the payload is tagged world.pose.kpts rather than the img.pose.kpts that ViTPose returns. Both lists hold the same 21 joints in OpenPose hand order, named once on the container by kpts_labels: the wrist, then the thumb, index, middle, ring and pinky fingers, four joints each from base to tip (_mcp, _pip, _dip, _tip).
method_params.include_mesh adds the full MANO mesh beside the keypoints.
