Reliéf API
Proměňte jednu fotografii na 3D model s basreliéfem a 16bitovou hloubkovou mapu pro 3D tisk, laserové gravírování a CNC frézování.
Vytvoření úlohy Reliéf
Vytvoří úlohu Reliéf. Tato úloha promění fotografii v basreliéfní model. Po úspěšném dokončení úloha vytvoří model jako soubor GLB a soubor STL, 16bitovou šedotónovou hloubkovou mapu a náhledový obrázek. Chcete-li získat pouze hloubkovou mapu, nastavte should_generate_model na false.
Úloha běží na pozadí.
Úloha Reliéf nemůže být vstupem jiného koncového bodu, například Remesh, Převést nebo Auto Split. Takové požadavky vrátí 403.
Request
# Simple request: a low relief, 60 mm on its longer side
curl https://api.meshy.ai/openapi/v1/relief \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"image_url": "<your publicly accessible image url or base64-encoded data URI>"
}'
# Advanced request: a deep 120 mm relief with a thicker base, curved from side to side
curl https://api.meshy.ai/openapi/v1/relief \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"image_url": "<your publicly accessible image url or base64-encoded data URI>",
"variant": "high",
"size_mm": 120,
"carving_depth_mm": 10,
"base_thickness_mm": 3,
"bend_mode": "convex",
"bend_angle": 90
}'
Response
{
"result": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20"
}
Parametry
- Name
- image_url
- Type
- string
- Povinné
- Description
Fotografie, která se má proměnit v reliéf, jako veřejně dostupná URL adresa nebo Data URI (
data:image/png;base64,...).Obrázek musí být soubor JPG, JPEG, PNG nebo WebP o velikosti nejvýše 20 MB a rozměrech alespoň 32 × 32 pixelů. Jeho delší strana může být nejvýše přibližně 16× delší než kratší strana. Jakýkoli jiný obrázek vrátí
400. Meshy před vytvořením reliéfu vyplní průhledné oblasti černou barvou.
- Name
- variant
- Type
- string
- výchozí low
- Description
Styl reliéfu. Určuje tvar hloubkové mapy a výchozí hodnotu
carving_depth_mm.Dostupné hodnoty:
high: hlubší rytí, pro 3D tištěné kusy.low: mělké rytí, pro laserové gravírování, CNC rytí a tenké destičky.
Odeslání
nullnebo""má stejný účinek jako vynechání parametru. Jakákoli jiná hodnota vrátí400.
- Name
- should_generate_model
- Type
- boolean
- výchozí true
- Description
Zda se má vytvořit reliéfní model. Nastavte na
falsepro úlohu, která vytvoří pouze hloubkovou mapu, bez modelu a bez náhledového obrázku. Meshy přesto zkontroluje parametry velikosti, rytí, základny, ohybu a rozlišení, ale nepoužije je. Toto nastavení nemění cenu v kreditech.
- Name
- size_mm
- Type
- number
- výchozí 60
- Description
Délka delší strany fotografie na modelu, měřená v plochém stavu před jakýmkoli ohybem, od
20do250milimetrů. S parametremremove_basemůže být model menší.
- Name
- carving_mode
- Type
- string
- výchozí emboss
- Description
Zda motiv vystupuje z desky, nebo je do ní vyryt.
Dostupné hodnoty:
emboss: bližší části fotografie vystupují.engrave: hloubka je obrácená, takže bližší části jsou vyryty dovnitř.
Hloubková mapa je v obou režimech stejná.
- Name
- carving_depth_mm
- Type
- number
- výchozí 6 (high), 3 (low)
- Description
Jak hluboko je reliéf vyryt, od
0do60milimetrů. Pokud jeremove_basenastaveno natrue, hodnota0vytvoří prázdný model. Úloha přesto proběhne úspěšně a stojí 20 kreditů, přičemž její soubory GLB a STL neobsahují žádnou geometrii.
- Name
- remove_base
- Type
- boolean
- výchozí false
- Description
Zda se má odříznout pozadí a nevytvářet základní desku. Pokud je
true,removal_thresholdurčuje, co se považuje za pozadí. Meshy kontrolujeremoval_thresholdv obou případech.
remove_base = true- Name
- removal_threshold
- Type
- number
- výchozí 0.01
- Description
Hloubka, pod kterou Meshy odřízne pozadí, od
0.01do1, přičemž hloubková mapa se pohybuje od0do1. Vysoká hodnota může odříznout celý reliéf a zanechat prázdný model, což přesto proběhne úspěšně a je zpoplatněno.
- Name
- base_thickness_mm
- Type
- number
- výchozí 1, or 0 with remove_base
- Description
Tloušťka základní desky, od
0.1do10milimetrů. Pokud jeremove_basenastaveno natrue, vynechte tento parametr nebo odešlete0.
- Name
- bend_mode
- Type
- string
- výchozí off
- Description
Zda a jakým směrem se má reliéf ohnout. Pokud není
off, tvar ohybu určujíbend_axisabend_angle. Meshy je kontroluje v obou případech.Dostupné hodnoty:
off: plochý reliéf.convex: přední strana se vyklenuje ven.concave: přední strana se prohýbá dovnitř.
bend_mode = convex or concave- Name
- bend_axis
- Type
- string
- výchozí xz
- Description
Které okraje se ohybem zakřivují.
Dostupné hodnoty:
xz: levý a pravý okraj.yz: horní a dolní okraj.
- Name
- bend_angle
- Type
- number
- výchozí 60
- Description
Úhel oblouku, který ohyb pokrývá, od
0do360stupňů. Pod hodnotou1zůstává reliéf plochý.
- Name
- mesh_resolution
- Type
- integer
- výchozí 1024
- Description
Počet bodů sítě podél delší strany fotografie, od
512do2048. Vyšší hodnota zachovává jemnější detaily a vytváří větší soubory. Při výchozí hodnotě1024má soubor GLB přibližně 40 až 50 MB a soubor STL přibližně 80 až 105 MB. Čtvercová fotografie dává větší velikosti. Při hodnotě2048jsou to přibližně 150 MB a 300 MB. Ohyb je ještě zvětšuje: soubor STL může při hodnotě2048dosáhnout přibližně 800 MB.
Návratové hodnoty
202 Accepted, s ID nové úlohy Reliéf v result.
Režimy selhání
- Name
400 - Bad Request- Description
Požadavek nelze spustit. Chybová zpráva uvádí, jaký problém byl zjištěn. Například:
- Chybějící parametr: nebyl odeslán
image_url. - Neplatný parametr: Parametr má špatný typ, je mimo svůj rozsah, nebo není jednou z dostupných hodnot. Například
variantneníhighanilow, nebomesh_resolutionnení celé číslo od512do2048. - Tloušťka základny:
base_thickness_mmnení0, pokud jeremove_basenastaveno natrue, nebo je nižší než0.1, pokud nastaveno není. - Nedostupná URL adresa: Meshy nemůže stáhnout obrázek z
image_url, například protože URL adresa vrací404nebo vyprší časový limit. - Neplatný obrázek: Obrázek není soubor JPG, JPEG, PNG ani WebP, má více než 20 MB, je menší než 32 × 32 pixelů, má příliš mnoho pixelů nebo jej nelze přečíst.
- Extrémní poměr stran: Delší strana obrázku je více než přibližně 16× delší než kratší strana.
Opravte požadavek a odešlete jej znovu. Meshy jej neúčtuje. Viz Chyby.
- Chybějící parametr: nebyl odeslán
- Name
401 - Unauthorized- Description
API klíč chybí nebo je neplatný. Zkontrolujte hlavičku
Authorization.
- Name
402 - Payment Required- Description
Například:
- Nedostatek kreditů: Účet nemá dostatek kreditů pro tuto úlohu, nebo účet dosáhl limitu kreditů. Zkontrolujte svůj zůstatek kreditů a zkuste to znovu.
- Plán zdarma: Vytvoření úlohy vyžaduje placený plán. Upgradujte svůj plán v nastavení předplatného a zkuste to znovu.
- Name
403 - Forbidden- Description
Moderation obsahu obrázek zablokovala. Meshy požadavek neúčtuje. Odešlete jiný obrázek.
- Name
429 - Too Many Requests- Description
Byl dosažen jeden z těchto limitů:
- Odeslali jste příliš mnoho požadavků. Počkejte a poté to zkuste znovu. Viz Omezení rychlosti.
- Příliš mnoho vašich úloh čeká ve frontě nebo běží. Počkejte, až se některé dokončí, a poté to zkuste znovu.
- V neomezeném plánu bez zbývajících kreditů jste dosáhli počtu úloh, které mohou běžet bez kreditů. Počkejte, až se nějaká úloha dokončí, nebo přidejte kredity.
Pokud bezpečnostní kontrola obrázek během běhu úlohy odmítne, úloha selže s hodnotou task_error.type nastavenou na invalid_input a task_error.code nastavenou na provider_content_refused. Meshy vrátí kredity za úlohu. Odešlete jiný obrázek. Viz Chyby.
Získat úlohu Reliéf
Vrátí úlohu Reliéf podle jejího ID.
Request
curl https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Parametry
- Name
- id
- Type
- path
- Description
ID úlohy z odpovědi na vytvoření.
Návratová hodnota
Smazání úlohy Reliéfu
Trvale smaže úlohu Reliéfu, včetně jejího modelu, mapy hloubky a dat. Smazání nelze vrátit zpět.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS. The task keeps running:
{
"message": "Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."
}
Parametry cesty
- Name
- id
- Type
- path
- Description
ID úlohy, která má být smazána.
Stav úlohy
Smazání úlohy ve stavu PENDING vrátí kredity, které byly použity při jejím vytvoření.
Úlohu ve stavu IN_PROGRESS nelze smazat. Požadavek vrátí 409 Conflict
a úloha pokračuje v běhu. Meshy nevrací kredity za úlohu, která už byla spuštěna,
takže její smazání by vás stálo jak kredity, tak výsledek. Počkejte, až
dosáhne stavu SUCCEEDED nebo FAILED, a poté ji smažte.
Smazání úlohy ve stavu SUCCEEDED nevrací její kredity. Úloze ve stavu FAILED již byly kredity vráceny v okamžiku selhání.
Návratové hodnoty
200 OK, pokud byla úloha smazána, nebo 409 Conflict, pokud je úloha
ve stavu IN_PROGRESS.
Seznam úloh Reliéfu
Vrátí seznam vašich úloh Reliéfu.
Request
curl https://api.meshy.ai/openapi/v1/relief?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
]
Parametry
- Name
- page_num
- Type
- integer
- Description
Číslo stránky, kterou chcete vrátit. Začíná na
1a výchozí hodnota je1.
- Name
- page_size
- Type
- integer
- Description
Počet úloh na stránku, až
100. Výchozí hodnota je10. Meshy zachází s hodnotou od101do255jako s100a vyšší hodnota vrátí400.
- Name
- sort_by
- Type
- string
- Description
Pořadí řazení.
Dostupné hodnoty:
+created_at: od nejstarších-created_at: od nejnovějších
Návratové hodnoty
Stránkovaný seznam objektů úlohy Reliéfu.
Streamování úlohy Reliéf
Streamuje aktualizace úlohy Reliéf jako Server-Sent Events (SSE).
Request
curl -N https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response Stream
// Error event example
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message event examples illustrate task progress (other task fields omitted here for brevity;
// each frame is the full task object).
event: message
data: {
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Parametry
- Name
- id
- Type
- path
- Description
ID úlohy z odpovědi na vytvoření.
Návratová hodnota
Proud objektů úlohy Reliéf jako Server-Sent Events.
Každá událost message obsahuje celý objekt úlohy, stejný, jaký vrací Získání úlohy Reliéf. Dokud je úloha ve stavu PENDING nebo IN_PROGRESS, pole, která se mezi událostmi mění, jsou progress, status, started_at a preceding_tasks (přítomné pouze tehdy, když jsou před touto úlohou ještě jiné úlohy). Pole model_urls, depth_map_url a thumbnail_url získají hodnoty, jakmile úloha dosáhne stavu SUCCEEDED. Úloha vytvářející pouze mapu hloubky si ponechá model_urls {} a prázdné thumbnail_url.
Událost error obsahuje pouze status_code a message, proto si před čtením status ověřte název události.
Objekt úkolu Reliéf
Objekt úkolu Reliéf popisuje jeden reliéf vytvořený z fotografie. model_urls, depth_map_url a thumbnail_url jsou vždy přítomné a prázdné, dokud úkol neuspěje.
The Relief Task Object
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Depth map only
{
"id": "0199c3d2-6b8f-7c25-8f3a-4d9e2b7c5a31",
"type": "relief",
"model_urls": {},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-6b8f-7c25-8f3a-4d9e2b7c5a31/output/depth.png?Expires=***",
"thumbnail_url": "",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000030000,
"expires_at": 1700259230000,
"task_error": null,
"consumed_credits": 20
}
- Name
- id
- Type
- string
- Description
ID úkolu. Považujte jej za neprůhledný řetězec a nespoléhejte na jeho formát.
- Name
- type
- Type
- string
- Description
Typ úkolu, vždy
relief.
- Name
- model_urls
- Type
- object
- Description
Adresy URL ke stažení modelu reliéfu. Soubory mohou být velké;
mesh_resolutionuvádí typické velikosti.- Name
glb- Type
- string
- Description
Soubor GLB bez textury. Jeho jednotkami jsou metry. Chybí u úkolu, který generuje pouze mapu hloubky.
- Name
stl- Type
- string
- Description
Stejný model jako binární soubor STL. Jeho jednotkami jsou milimetry, takže se otevře ve skutečné velikosti reliéfu, s osou Z nahoru. Chybí u úkolu, který generuje pouze mapu hloubky.
- Name
- depth_map_url
- Type
- string
- Description
Adresa URL ke stažení 16bitové mapy hloubky ve stupních šedi, ze které je reliéf vytvořen. Světlejší pixely jsou výše. Hodnoty představují relativní výšky, nikoli milimetry. Software pro laserové gravírování a CNC ji může použít jako výškovou mapu. Soubor má přibližně 1 až 2 MB. Prázdné, pokud žádná neexistuje.
- Name
- thumbnail_url
- Type
- string
- Description
Adresa URL ke stažení náhledového obrázku modelu reliéfu. Prázdné, pokud nebyl žádný vykreslen, včetně úkolu generujícího pouze mapu hloubky.
- Name
- progress
- Type
- integer
- Description
Kolik z úkolu je hotovo, v procentech. Je
0, dokud úkol nezačne, a100, když uspěje.
- Name
- status
- Type
- string
- Description
Stav úkolu, jeden z
PENDING,IN_PROGRESS,SUCCEEDEDneboFAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Počet úkolů před tímto úkolem ve frontě. Pole se vynechává, pokud je hodnota
0, takže se zobrazuje pouze tehdy, když jsou před tímto úkolem jiné úkoly.
- Name
- created_at
- Type
- timestamp
- Description
Čas vytvoření úkolu, v milisekundách Unixového času.
- Name
- started_at
- Type
- timestamp
- Description
Čas spuštění úkolu, v milisekundách Unixového času. Je
0, dokud úkol nezačne.
- Name
- finished_at
- Type
- timestamp
- Description
Čas dokončení úkolu, v milisekundách Unixového času. Je
0, dokud úkol neskončí.
- Name
- expires_at
- Type
- timestamp
- Description
Čas vypršení platnosti výsledku úkolu, v milisekundách Unixového času. Je
0, dokud úkol neskončí.
- Name
- task_error
- Type
- object
- Description
Podrobnosti o chybě, pokud úkol selže. Viz Chyby.
- Name
- consumed_credits
- Type
- integer
- Description
Počet kreditů, které úkol spotřeboval:
20, nebo0u úkolu se stavemFAILED, který Meshy vrátí.