curl --request POST \
--url https://api.budgetpixel.com/v1/poses/designs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"words": "sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder"
}
'import requests
url = "https://api.budgetpixel.com/v1/poses/designs"
payload = { "words": "sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
words: 'sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder'
})
};
fetch('https://api.budgetpixel.com/v1/poses/designs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.budgetpixel.com/v1/poses/designs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'words' => 'sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.budgetpixel.com/v1/poses/designs"
payload := strings.NewReader("{\n \"words\": \"sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.budgetpixel.com/v1/poses/designs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"words\": \"sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.budgetpixel.com/v1/poses/designs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"words\": \"sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder\"\n}"
response = http.request(request)
puts response.read_body{
"matches": [
{
"cover": {
"angle": "front",
"azimuth": 0,
"elevation": 0,
"figure": "woman",
"height": 1152,
"id": "<string>",
"label": "Back left · from above",
"made_by": "<string>",
"mention": "@seiza_pose.back",
"thumbnail_url": "<string>",
"url": "<string>",
"view": true,
"width": 864
},
"created_at": "2023-11-07T05:31:56Z",
"creator": {
"display_name": "<string>",
"username": "<string>"
},
"description": "Sits on the floor leaning back, the weight on both palms placed flat behind the hips. One knee is bent up towards the chest, the other leg stretched out straight and relaxed. The torso angles slightly back and the head faces forward.",
"difficulty": "everyday",
"fit": "women",
"handle": "sitting_knee_up_pose",
"holdable": true,
"id": "<string>",
"mention": "@sitting_knee_up_pose",
"name": "Sitting Knee Up",
"pictures": [
{
"angle": "front",
"azimuth": 0,
"elevation": 0,
"figure": "woman",
"height": 1152,
"id": "<string>",
"label": "Back left · from above",
"made_by": "<string>",
"mention": "@seiza_pose.back",
"thumbnail_url": "<string>",
"url": "<string>",
"view": true,
"width": 864
}
],
"props": [
"chair"
],
"rating": 0,
"shelf": "sitting",
"shelf_label": "Sitting",
"slug": "sitting-knee-up-pose",
"source": "house",
"support": "sitting",
"tags": [
"floor",
"relaxed"
],
"uses": 123,
"view_count": 3
}
],
"price": 100
}{
"design": {
"created_at": "2023-11-07T05:31:56Z",
"credits_charged": 123,
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"message": "<string>",
"parent_pose_id": "<string>",
"pose": {
"cover": {
"angle": "front",
"azimuth": 0,
"elevation": 0,
"figure": "woman",
"height": 1152,
"id": "<string>",
"label": "Back left · from above",
"made_by": "<string>",
"mention": "@seiza_pose.back",
"thumbnail_url": "<string>",
"url": "<string>",
"view": true,
"width": 864
},
"created_at": "2023-11-07T05:31:56Z",
"creator": {
"display_name": "<string>",
"username": "<string>"
},
"description": "Sits on the floor leaning back, the weight on both palms placed flat behind the hips. One knee is bent up towards the chest, the other leg stretched out straight and relaxed. The torso angles slightly back and the head faces forward.",
"difficulty": "everyday",
"fit": "women",
"handle": "sitting_knee_up_pose",
"holdable": true,
"id": "<string>",
"mention": "@sitting_knee_up_pose",
"name": "Sitting Knee Up",
"pictures": [
{
"angle": "front",
"azimuth": 0,
"elevation": 0,
"figure": "woman",
"height": 1152,
"id": "<string>",
"label": "Back left · from above",
"made_by": "<string>",
"mention": "@seiza_pose.back",
"thumbnail_url": "<string>",
"url": "<string>",
"view": true,
"width": 864
}
],
"props": [
"chair"
],
"rating": 0,
"shelf": "sitting",
"shelf_label": "Sitting",
"slug": "sitting-knee-up-pose",
"source": "house",
"support": "sitting",
"tags": [
"floor",
"relaxed"
],
"uses": 123,
"view_count": 3
},
"stage": "spec",
"stage_label": "Checking a real body can do it",
"status": "queued",
"suggestion": "<string>",
"words": "<string>"
},
"price": 100
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": "Designing a pose costs 100 credits.",
"error_code": "insufficient_credits",
"required_credits": 100
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}Design a pose
Design a new pose when the library doesn’t have the one you need: describe it in words, or
start from a library pose (parent_pose_id) and say what to change. The new pose is checked
that a real body can do it, drawn on the mannequins, and added to the shared library for
every user with its own handle and you as its creator. There are no private poses.
Already in the library? Without confirm, a request that library poses already match
answers 200 with them in matches and starts nothing: use one, or send the request again
with confirm: true.
Answer: 201 with the design. It takes about 3 to 6 minutes: follow it with
GET /v1/poses/designs/{id} every 20 to 30 seconds until status is done (with the new
pose), refused (the reason in message, a doable alternative in suggestion) or failed.
Refused: poses a real body can’t do, contortion, sex positions, minors, real people and violence.
Price: 100 credits, charged only when the pose is made; a refused or failed design is
free. Paid plans only (403 on the Free plan), up to 20 designs a day (429 past that).
curl --request POST \
--url https://api.budgetpixel.com/v1/poses/designs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"words": "sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder"
}
'import requests
url = "https://api.budgetpixel.com/v1/poses/designs"
payload = { "words": "sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
words: 'sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder'
})
};
fetch('https://api.budgetpixel.com/v1/poses/designs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.budgetpixel.com/v1/poses/designs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'words' => 'sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.budgetpixel.com/v1/poses/designs"
payload := strings.NewReader("{\n \"words\": \"sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.budgetpixel.com/v1/poses/designs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"words\": \"sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.budgetpixel.com/v1/poses/designs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"words\": \"sitting on a high stool, one foot on the rung, the other leg straight, hands on the front knee, looking over the left shoulder\"\n}"
response = http.request(request)
puts response.read_body{
"matches": [
{
"cover": {
"angle": "front",
"azimuth": 0,
"elevation": 0,
"figure": "woman",
"height": 1152,
"id": "<string>",
"label": "Back left · from above",
"made_by": "<string>",
"mention": "@seiza_pose.back",
"thumbnail_url": "<string>",
"url": "<string>",
"view": true,
"width": 864
},
"created_at": "2023-11-07T05:31:56Z",
"creator": {
"display_name": "<string>",
"username": "<string>"
},
"description": "Sits on the floor leaning back, the weight on both palms placed flat behind the hips. One knee is bent up towards the chest, the other leg stretched out straight and relaxed. The torso angles slightly back and the head faces forward.",
"difficulty": "everyday",
"fit": "women",
"handle": "sitting_knee_up_pose",
"holdable": true,
"id": "<string>",
"mention": "@sitting_knee_up_pose",
"name": "Sitting Knee Up",
"pictures": [
{
"angle": "front",
"azimuth": 0,
"elevation": 0,
"figure": "woman",
"height": 1152,
"id": "<string>",
"label": "Back left · from above",
"made_by": "<string>",
"mention": "@seiza_pose.back",
"thumbnail_url": "<string>",
"url": "<string>",
"view": true,
"width": 864
}
],
"props": [
"chair"
],
"rating": 0,
"shelf": "sitting",
"shelf_label": "Sitting",
"slug": "sitting-knee-up-pose",
"source": "house",
"support": "sitting",
"tags": [
"floor",
"relaxed"
],
"uses": 123,
"view_count": 3
}
],
"price": 100
}{
"design": {
"created_at": "2023-11-07T05:31:56Z",
"credits_charged": 123,
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"message": "<string>",
"parent_pose_id": "<string>",
"pose": {
"cover": {
"angle": "front",
"azimuth": 0,
"elevation": 0,
"figure": "woman",
"height": 1152,
"id": "<string>",
"label": "Back left · from above",
"made_by": "<string>",
"mention": "@seiza_pose.back",
"thumbnail_url": "<string>",
"url": "<string>",
"view": true,
"width": 864
},
"created_at": "2023-11-07T05:31:56Z",
"creator": {
"display_name": "<string>",
"username": "<string>"
},
"description": "Sits on the floor leaning back, the weight on both palms placed flat behind the hips. One knee is bent up towards the chest, the other leg stretched out straight and relaxed. The torso angles slightly back and the head faces forward.",
"difficulty": "everyday",
"fit": "women",
"handle": "sitting_knee_up_pose",
"holdable": true,
"id": "<string>",
"mention": "@sitting_knee_up_pose",
"name": "Sitting Knee Up",
"pictures": [
{
"angle": "front",
"azimuth": 0,
"elevation": 0,
"figure": "woman",
"height": 1152,
"id": "<string>",
"label": "Back left · from above",
"made_by": "<string>",
"mention": "@seiza_pose.back",
"thumbnail_url": "<string>",
"url": "<string>",
"view": true,
"width": 864
}
],
"props": [
"chair"
],
"rating": 0,
"shelf": "sitting",
"shelf_label": "Sitting",
"slug": "sitting-knee-up-pose",
"source": "house",
"support": "sitting",
"tags": [
"floor",
"relaxed"
],
"uses": 123,
"view_count": 3
},
"stage": "spec",
"stage_label": "Checking a real body can do it",
"status": "queued",
"suggestion": "<string>",
"words": "<string>"
},
"price": 100
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": "Designing a pose costs 100 credits.",
"error_code": "insufficient_credits",
"required_credits": 100
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}{
"error": {
"code": "model_not_available",
"message": "<string>",
"type": "invalid_request_error"
}
}Authorizations
API key as a bearer token: Authorization: Bearer bpx_live_xxx
Body
The pose in words, head to toe (with parent_pose_id, what to change).
600Design it even though library poses already look like it.
A library pose's handle or id, to make a changed version of it. words then say what to change.