lowpoly wordt op 30 okt 2026 uitgefaseerd. Stap vóór deze datums over op een ander model om fouten bij verzoeken te voorkomen. Alle afschaffingen bekijken

Reliëf API

Zet één foto om in een bas-reliëf 3D-model en een 16-bit dieptekaart, voor 3D-printen, lasergraveren en CNC-frezen.


POST/openapi/v1/relief

Een Reliëf-taak maken

Maakt een Reliëf-taak aan. De taak zet een foto om in een bas-reliëf model. Als het slaagt, levert de taak het model op als een GLB-bestand en een STL-bestand, een 16-bit grijswaarden dieptekaart en een voorbeeldafbeelding. Om alleen de dieptekaart te krijgen, stel je should_generate_model in op false.

De taak draait op de achtergrond.

Een Reliëf-taak kan niet de invoer zijn van een andere endpoint, zoals Remesh, Converteren of Auto Split. Dergelijke verzoeken geven 403 terug.

Request

POST
/openapi/v1/relief
# 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"
}

Parameters

  • Name
    image_url
    Type
    string
    Verplicht
    Description

    De foto die wordt omgezet in een reliëf, als een openbare URL of een data-URI (data:image/png;base64,...).

    De afbeelding moet een JPG-, JPEG-, PNG- of WebP-bestand zijn van maximaal 20 MB, en minstens 32 × 32 pixels. De langere zijde mag maximaal ongeveer 16 keer de kortere zijde zijn. Elke andere afbeelding geeft 400 terug. Meshy vult transparante gebieden met zwart voordat het reliëf wordt opgebouwd.

  • Name
    variant
    Type
    string
    standaard low
    Description

    De reliëfstijl. Deze bepaalt de dieptekaart en stelt de standaard carving_depth_mm in.

    Beschikbare waarden:

    • high: diepere uitsnijding, voor 3D-geprinte stukken.
    • low: ondiepe uitsnijding, voor lasergraveren, CNC-graveren en dunne plaquettes.

    Het sturen van null of "" is hetzelfde als het weglaten. Elke andere waarde geeft 400 terug.

  • Name
    should_generate_model
    Type
    boolean
    standaard true
    Description

    Of het reliëfmodel wordt gebouwd. Stel dit in op false voor een taak die alleen een dieptekaart oplevert, zonder model en zonder voorbeeldafbeelding. Meshy controleert nog steeds de parameters voor grootte, uitsnijding, basis, buiging en resolutie, maar gebruikt ze niet. Het verandert de credit-kosten niet.

  • Name
    size_mm
    Type
    number
    standaard 60
    Description

    De lengte van de langere zijde van de foto op het model, gemeten plat voor elke buiging, van 20 tot 250 millimeter. Met remove_base kan het model kleiner zijn.

  • Name
    carving_mode
    Type
    string
    standaard emboss
    Description

    Of het onderwerp uit de plaat steekt of erin wordt uitgesneden.

    Beschikbare waarden:

    • emboss: de dichterbij gelegen delen van de foto steken naar voren.
    • engrave: de diepte wordt omgekeerd, zodat de dichterbij gelegen delen worden ingesneden.

    De dieptekaart is in beide modi hetzelfde.

  • Name
    carving_depth_mm
    Type
    number
    standaard 6 (high), 3 (low)
    Description

    Hoe diep het reliëf wordt uitgesneden, van 0 tot 60 millimeter. Met remove_base ingesteld op true, laat 0 een leeg model achter. De taak slaagt nog steeds en kost 20 credits, en de GLB- en STL-bestanden bevatten geen geometrie.

  • Name
    remove_base
    Type
    boolean
    standaard false
    Description

    Of de achtergrond wordt weggesneden en er geen basisplaat wordt gebouwd. Als dit true is, bepaalt removal_threshold wat als achtergrond geldt. Meshy controleert removal_threshold in beide gevallen.

Alleen van toepassing wanneer remove_base = true
  • Name
    removal_threshold
    Type
    number
    standaard 0.01
    Description

    De diepte waaronder Meshy de achtergrond wegsnijdt, van 0.01 tot 1, waarbij de dieptekaart loopt van 0 tot 1. Een hoge waarde kan het hele reliëf wegsnijden en een leeg model achterlaten, wat nog steeds slaagt en in rekening wordt gebracht.

  • Name
    base_thickness_mm
    Type
    number
    standaard 1, or 0 with remove_base
    Description

    De dikte van de basisplaat, van 0.1 tot 10 millimeter. Als remove_base true is, laat je dit weg of stuur je 0.

  • Name
    bend_mode
    Type
    string
    standaard off
    Description

    Of het reliëf wordt gebogen, en in welke richting. Als dit niet off is, bepalen bend_axis en bend_angle de vorm van de buiging. Meshy controleert ze in beide gevallen.

    Beschikbare waarden:

    • off: een plat reliëf.
    • convex: de voorkant bolt naar buiten.
    • concave: de voorkant kromt naar binnen.
Alleen van toepassing wanneer bend_mode = convex or concave
  • Name
    bend_axis
    Type
    string
    standaard xz
    Description

    Welke randen de buiging omkrult.

    Beschikbare waarden:

    • xz: de linker- en rechterrand.
    • yz: de boven- en onderrand.
  • Name
    bend_angle
    Type
    number
    standaard 60
    Description

    De boog die de buiging beslaat, van 0 tot 360 graden. Onder 1 blijft het reliëf plat.

  • Name
    mesh_resolution
    Type
    integer
    standaard 1024
    Description

    Het aantal meshpunten langs de langere zijde van de foto, van 512 tot 2048. Een hogere waarde behoudt fijnere details en maakt grotere bestanden. Bij de standaardwaarde 1024 is het GLB-bestand ongeveer 40 tot 50 MB en het STL-bestand ongeveer 80 tot 105 MB. Een vierkante foto geeft de grotere bestandsgroottes. Bij 2048 zijn ze ongeveer 150 MB en 300 MB. Een buiging maakt ze groter: het STL-bestand kan bij 2048 oplopen tot ongeveer 800 MB.

Resultaat

202 Accepted, met de ID van de nieuwe Reliëf-taak in result.

Faalmodi

  • Name
    400 - Bad Request
    Description

    Het verzoek kan niet worden uitgevoerd. Het foutbericht geeft aan welk probleem er is gevonden. Bijvoorbeeld:

    • Ontbrekende parameter: image_url werd niet meegestuurd.
    • Ongeldige parameter: Een parameter heeft het verkeerde type, valt buiten het bereik, of is niet een van de beschikbare waarden. Bijvoorbeeld, variant is niet high of low, of mesh_resolution is geen geheel getal van 512 tot 2048.
    • Basisdikte: base_thickness_mm is niet 0 terwijl remove_base op true staat, of is lager dan 0.1 zonder dat.
    • Onbereikbare URL: Meshy kan de image_url-afbeelding niet downloaden, bijvoorbeeld omdat de URL 404 teruggeeft of een time-out optreedt.
    • Ongeldige afbeelding: De afbeelding is geen JPG-, JPEG-, PNG- of WebP-bestand, is groter dan 20 MB, is kleiner dan 32 × 32 pixels, heeft te veel pixels, of kan niet worden gelezen.
    • Extreme beeldverhouding: De langere zijde van de afbeelding is meer dan ongeveer 16 keer de kortere zijde.

    Herstel het verzoek en stuur het opnieuw. Meshy brengt hiervoor geen kosten in rekening. Zie Fouten.

  • Name
    401 - Unauthorized
    Description

    De API-sleutel ontbreekt of is ongeldig. Controleer de Authorization-header.

  • Name
    402 - Payment Required
    Description

    Bijvoorbeeld:

    • Onvoldoende credits: Het account heeft niet genoeg credits voor deze taak, of het account heeft een credit-limiet bereikt. Controleer je credit-saldo en probeer het opnieuw.
    • Gratis abonnement: Het aanmaken van een taak vereist een betaald abonnement. Upgrade je abonnement in je abonnementsinstellingen en probeer het opnieuw.
  • Name
    403 - Forbidden
    Description

    Contentmoderatie heeft de afbeelding geblokkeerd. Meshy brengt hiervoor geen kosten in rekening. Stuur een andere afbeelding.

  • Name
    429 - Too Many Requests
    Description

    Een van deze limieten is bereikt:

    • Je hebt te veel verzoeken verstuurd. Wacht en probeer het opnieuw. Zie Snelheidslimieten.
    • Er staan te veel van je taken in de wachtrij of lopen er al te veel. Wacht tot sommige klaar zijn en probeer het opnieuw.
    • Bij een onbeperkt abonnement zonder resterende credits heb je het aantal taken bereikt dat zonder credits kan draaien. Wacht tot een taak klaar is, of voeg credits toe.

Als een veiligheidscontrole de afbeelding weigert terwijl de taak draait, mislukt de taak met task_error.type ingesteld op invalid_input en task_error.code ingesteld op provider_content_refused. Meshy vergoedt de credits van de taak. Stuur een andere afbeelding. Zie Fouten.


GET/openapi/v1/relief/:id

Haal een Reliëf-taak op

Retourneert een Reliëf-taak op basis van de ID.

Request

GET
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20
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
}

Parameters

  • Name
    id
    Type
    path
    Description

    De taak-ID uit het antwoord van het aanmaken.

Retourneert

Het Reliëf-taakobject.


DELETE/openapi/v1/relief/:id

Een Reliëftaak verwijderen

Verwijdert een Reliëftaak permanent, inclusief het model, de dieptekaart en de data. Je kunt een verwijdering niet ongedaan maken.

Request

DELETE
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20
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."
}

Padparameters

  • Name
    id
    Type
    path
    Description

    De ID van de te verwijderen taak.

Taakstatus

Het verwijderen van een PENDING-taak restitueert de credits die werden gebruikt bij het aanmaken ervan.

Een IN_PROGRESS-taak kan niet worden verwijderd. Het verzoek geeft 409 Conflict terug, en de taak blijft actief. Meshy restitueert geen taak die al is gestart, dus het verwijderen ervan zou je zowel de credits als het resultaat kosten. Wacht tot de taak SUCCEEDED of FAILED bereikt, en verwijder hem dan.

Het verwijderen van een SUCCEEDED-taak restitueert de credits niet. Een FAILED-taak is al gerestitueerd toen deze mislukte.

Retourwaarden

200 OK wanneer de taak is verwijderd, of 409 Conflict wanneer de taak IN_PROGRESS is.


GET/openapi/v1/relief

List van Reliëf-taken

Retourneert een lijst van uw Reliëf-taken.

Request

GET
/openapi/v1/relief
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
  }
]

Parameters

  • Name
    page_num
    Type
    integer
    Description

    Het paginanummer dat moet worden geretourneerd. Begint bij en standaard 1.

  • Name
    page_size
    Type
    integer
    Description

    Het aantal taken per pagina, tot 100. Standaard 10. Meshy behandelt een waarde van 101 tot 255 als 100, en een grotere waarde geeft 400 terug.

  • Name
    sort_by
    Type
    string
    Description

    De sorteervolgorde.

    Beschikbare waarden:

    • +created_at: oudste eerst
    • -created_at: nieuwste eerst

Retourneert

Een gepagineerde lijst van Reliëf-taakobjecten.


GET/openapi/v1/relief/:id/stream

Stream een Reliëf-taak

Streamt de updates van een Reliëf-taak als Server-Sent Events (SSE).

Request

GET
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/stream
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
}

Parameters

  • Name
    id
    Type
    path
    Description

    De taak-ID uit het aanmaakantwoord.

Retourneert

Een stream van Reliëf-taakobjecten als Server-Sent Events.

Elke message-gebeurtenis bevat het volledige taakobject, hetzelfde object dat Haal een Reliëf-taak op retourneert. Zolang de taak PENDING of IN_PROGRESS is, zijn de velden die tussen gebeurtenissen veranderen progress, status, started_at en preceding_tasks (alleen aanwezig zolang er taken voor deze in de rij staan). model_urls, depth_map_url en thumbnail_url krijgen hun waarden zodra de taak SUCCEEDED bereikt. Een taak die alleen een depth map genereert, behoudt model_urls {} en een lege thumbnail_url.

Een error-gebeurtenis bevat alleen status_code en message, controleer dus de naam van de gebeurtenis voordat je status uitleest.


Het Reliëf-taakobject

Een Reliëf-taakobject beschrijft één reliëf gemaakt van een foto. model_urls, depth_map_url en thumbnail_url zijn altijd aanwezig, en leeg totdat de taak slaagt.

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

    De taak-ID. Behandel dit als een ondoorzichtige string en vertrouw niet op het formaat ervan.

  • Name
    type
    Type
    string
    Description

    Het taaktype, altijd relief.

  • Name
    model_urls
    Type
    object
    Description

    Downloadlinks voor het reliëfmodel. De bestanden kunnen groot zijn; mesh_resolution geeft de gebruikelijke bestandsgroottes aan.

    • Name
      glb
      Type
      string
      Description

      Het GLB-bestand, zonder textuur. De eenheden zijn meters. Afwezig bij een taak die alleen een dieptekaart genereert.

    • Name
      stl
      Type
      string
      Description

      Hetzelfde model als een binair STL-bestand. De eenheden zijn millimeters, zodat het bestand op de werkelijke grootte van het reliëf wordt geopend, met Z omhoog. Afwezig bij een taak die alleen een dieptekaart genereert.

  • Name
    depth_map_url
    Type
    string
    Description

    Downloadlink voor de 16-bit grijswaarden-dieptekaart waarop het reliëf is gebaseerd. Lichtere pixels zijn hoger. De waarden zijn relatieve hoogtes, geen millimeters. Lasergraveer- en CNC-software kan dit gebruiken als hoogtekaart. Het bestand is ongeveer 1 tot 2 MB groot. Leeg als er geen is.

  • Name
    thumbnail_url
    Type
    string
    Description

    Downloadlink voor een voorbeeldafbeelding van het reliëfmodel. Leeg als er geen is gerenderd, ook bij een taak die alleen een dieptekaart genereert.

  • Name
    progress
    Type
    integer
    Description

    Hoeveel van de taak is voltooid, als percentage. Dit is 0 totdat de taak begint en 100 zodra deze slaagt.

  • Name
    status
    Type
    string
    Description

    De taakstatus, een van PENDING, IN_PROGRESS, SUCCEEDED, of FAILED.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Het aantal taken dat voor deze taak in de wachtrij staat. Dit veld wordt weggelaten wanneer de waarde 0 is, en verschijnt dus alleen zolang er taken voor deze taak staan.

  • Name
    created_at
    Type
    timestamp
    Description

    Tijdstip waarop de taak is aangemaakt, in Unix-milliseconden.

  • Name
    started_at
    Type
    timestamp
    Description

    Tijdstip waarop de taak is gestart, in Unix-milliseconden. Dit is 0 totdat de taak start.

  • Name
    finished_at
    Type
    timestamp
    Description

    Tijdstip waarop de taak is voltooid, in Unix-milliseconden. Dit is 0 totdat de taak is voltooid.

  • Name
    expires_at
    Type
    timestamp
    Description

    Tijdstip waarop het resultaat van de taak verloopt, in Unix-milliseconden. Dit is 0 totdat de taak is voltooid.

  • Name
    task_error
    Type
    object
    Description

    De foutgegevens wanneer de taak mislukt. Zie Fouten.

  • Name
    consumed_credits
    Type
    integer
    Description

    Het aantal credits dat de taak heeft gebruikt: 20, of 0 voor een FAILED-taak, wat Meshy terugbetaalt.