Creative Lab Fidget Pixel API
Verander een foto in twee stappen in een meerkleurig, 3D-printbaar pixel-art fidget-board. Een prototype-taak zet de foto om in een pixel-art-afbeelding. Een build-taak zet die afbeelding om in in elkaar grijpende onderdelen in één enkel 3MF-bestand, en gebruikt de ID van de prototype-taak als input_task_id.
POST /openapi/creative-lab/fidget-pixel/v1/prototypePOST /openapi/creative-lab/fidget-pixel/v1/build
Beide POST-endpoints vereisen een betaald abonnement. Een verzoek vanaf een gratis account retourneert 402.
Fidget Pixel-prototypetaak aanmaken
Genereert één pixel-art-afbeelding op basis van een foto. Om de onderdelen te bouwen, geef je de ID van deze taak door aan de build-endpoint als input_task_id. Zie voor de velden van de taak Het Fidget Pixel-prototypetaakobject.
Als de afbeelding je niet bevalt, maak dan een nieuwe prototypetaak aan. Elke taak wordt afzonderlijk in rekening gebracht.
Request
# Stage 1: pixelize the source photo
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/prototype \
-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>",
"type": "person"
}'
Response
{
"result": "019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7"
}
Parameters
- Name
- image_url
- Type
- string
- Verplicht
- Description
De foto die moet worden omgezet in pixel-art, als openbare URL of als data-URI (
data:image/jpeg;base64,<je base64-gecodeerde afbeeldingsgegevens>).De afbeelding moet een JPG-, JPEG-, PNG- of WebP-bestand van maximaal 20 MB zijn. Meshy detecteert het formaat op basis van de afbeeldingsgegevens, niet op basis van de bestandsextensie in de URL. Een URL zonder extensie werkt ook, en Meshy volgt omleidingen.
- Name
- type
- Type
- string
- Verplicht
- Description
Wat de foto toont, wat de pixel-art-stijl bepaalt. De twee stijlen zien er duidelijk verschillend uit. Elke andere waarde geeft
400terug.Beschikbare waarden:
person: een persoon, op een portret- of volledige-lichaamsfoto. Meshy tekent een pixelsprite in chibi-stijl.other: elk ander onderwerp, bijvoorbeeld een huisdier, een object, een mascotte, een logo of een landschap. Meshy tekent een pixelicoon in kralenkunst-stijl.
- Name
- name
- Type
- string
- Description
Een naam voor de taak, tot 100 tekens. Deze komt terug in het
name-veld van de taak. Een langere naam geeft400terug.
Retourwaarden
Het veld result bevat de ID van de nieuwe prototypetaak. Haal de taak op of stream deze totdat status gelijk is aan SUCCEEDED. Geef de ID vervolgens door aan de build-endpoint als input_task_id.
Foutmodi
- Name
400 - Bad Request- Description
Het verzoek kan niet worden uitgevoerd. Bijvoorbeeld:
image_urloftypeontbreekt.typeis nietpersonofother.- De afbeelding is geen JPG-, JPEG-, PNG- of WebP-bestand.
- De afbeelding is te klein, groter dan 20 MB, of overschrijdt het maximale aantal pixels.
- Meshy kan de afbeelding niet downloaden, bijvoorbeeld omdat de URL
404teruggeeft of de time-out verstrijkt. - De data-URI is geen geldige base64.
- De afbeelding is gemarkeerd als NSFW.
Het foutbericht geeft aan welk probleem er is gevonden. Herstel het verzoek en verstuur het opnieuw.
- Name
401 - Unauthorized- Description
De API-sleutel ontbreekt of is ongeldig. Controleer de
Authorization-header.
- Name
402 - Payment Required- Description
Een van de volgende situaties doet zich voor:
- Het account heeft niet genoeg credits.
- De API-sleutel, werkruimte of het lid heeft het creditlimiet bereikt.
- Het account gebruikt het gratis abonnement.
Controleer je credits en abonnement, en probeer het opnieuw.
- Name
403 - Forbidden- Description
Je team heeft IP-filtering ingeschakeld, en Meshy heeft de afbeelding gemarkeerd vanwege intellectueel eigendom van derden. Stuur een afbeelding waarvoor je gebruiksrechten hebt.
- Name
429 - Too Many Requests- Description
Een van deze limieten is bereikt:
- Je hebt meer verzoeken verstuurd dan je rate limit toestaat. Wacht een paar seconden en probeer het opnieuw. Zie Rate limits.
- Er staan te veel van je taken in de wachtrij of lopen er al te veel. Wacht tot een aantal zijn afgerond en probeer het opnieuw.
- Bij een onbeperkt abonnement zonder resterende credits heb je het aantal taken bereikt dat zonder credits kan worden uitgevoerd. Wacht tot een taak is afgerond, of voeg credits toe.
- Name
500 - Internal Server Error- Description
Meshy is op een serverfout gestuit, bijvoorbeeld omdat de controle op intellectueel eigendom van de afbeelding niet kon worden uitgevoerd. Meshy maakt de taak niet aan en betaalt eventueel in rekening gebrachte credits terug. Probeer het verzoek opnieuw.
Een Fidget Pixel build-taak aanmaken
Genereert de 3D-printbare onderdelen op basis van een geslaagde prototype-taak. Meshy bemonstert de pixel-art-afbeelding op het raster en reduceert deze tot maximaal color_count kleuren. Elke cel van het onderwerp wordt een in elkaar grijpend onderdeel, en de achtergrond wordt niet geprint.
Het resultaat is één enkel multicolor 3MF-bestand, klaar om in kleur te printen. Elk onderdeel heeft een grijs lichaam en een bovenkant in de kleur van zijn pixel. Voor de velden ervan, zie Het Fidget Pixel build-taakobject.
Request
# Stage 2: chain build off a succeeded prototype task
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/build \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7",
"options": {
"shape": "square",
"grid_size": 32,
"piece_size_mm": 8,
"color_count": 8,
"piece_height_mm": 15
},
"output": {
"format": "3mf"
}
}'
Response
{
"result": "019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98"
}
Parameters
- Name
- input_task_id
- Type
- string
- Verplicht
- Description
De ID van de prototype-taak om te builden. Het moet een taak zijn die uw account heeft aangemaakt met
POST /openapi/creative-lab/fidget-pixel/v1/prototype, met de statusSUCCEEDED.Een ID die niet een van uw Fidget Pixel prototype-taken via de API is, geeft
404terug, inclusief een prototype gemaakt in de web-app.
- Name
- name
- Type
- string
- Description
Een naam voor de taak, tot 100 tekens. Deze komt terug in het
name-veld van de taak. Een langere naam geeft400terug.
options
Instellingen voor de vorm en grootte van de onderdelen. Elk veld heeft een standaardwaarde, dus stuur alleen de velden die u wilt wijzigen. Een 0 gebruikt de standaardwaarde van het veld. Dit zijn dezelfde instellingen als in de Creative Lab web-app. Andere vorminstellingen liggen vast, en Meshy stelt ze in op basis van shape en piece_size_mm.
- Name
- shape
- Type
- string
- standaard square
- Description
De voetafdruk van elk onderdeel. Elke andere waarde geeft
400terug.Beschikbare waarden:
square: vierkante onderdelen op een vierkant rasterhex: zeshoekige onderdelen op een zeshoekig raster, metpiece_size_mmingesteld op6of8
- Name
- grid_size
- Type
- integer
- standaard 32
- Description
Het aantal rastercellen langs elke zijde van het bord,
16of32. Elke andere waarde geeft400terug. Een32-raster behoudt meer detail. Een16-raster geeft minder onderdelen van dezelfde grootte, waardoor het bord ongeveer half zo breed is.
- Name
- piece_size_mm
- Type
- integer
- standaard 8
- Description
De randlengte van elk onderdeel in millimeter,
6,8, of10. Elke andere waarde geeft400terug. Samen metgrid_sizebepaalt dit de grootte van het geprinte bord. Bijvoorbeeld, een32-raster met onderdelen van 8 mm is ongeveer 26,5 cm per zijde.10werkt niet methexen geeft400terug, omdat het schuine zeshoeksvlak bij de meeste consumenten-FDM-printers overhangt.
- Name
- color_count
- Type
- integer
- standaard 8
- Description
Het maximale aantal kleuren in het pixel-art-palet, van
1tot8. Een waarde buiten het bereik geeft400terug. Om te printen heeft u totcolor_countplus één filament nodig, één per kleur en één voor de grijze lichamen.
- Name
- piece_height_mm
- Type
- integer
- standaard 15
- Description
De hoogte van elk onderdeel in millimeter, van
10tot80. Een waarde buiten het bereik geeft400terug.
output
Instellingen voor het resultaatbestand.
- Name
- format
- Type
- string
- standaard 3mf
- Description
Het bestandsformaat van het resultaat. Elke andere waarde geeft
400terug.Beschikbare waarden:
3mf: één multicolormodel.3mf-bestand, teruggegeven inmodel_urls.3mf
Retourwaarden
Het result-veld bevat de ID van de nieuwe build-taak. Haal de taak op of stream deze totdat status SUCCEEDED is. Download vervolgens het 3MF-bestand via model_urls.3mf.
Foutmodi
- Name
400 - Bad Request- Description
Het verzoek kan niet worden uitgevoerd. Bijvoorbeeld:
input_task_idontbreekt of is geen geldige taak-ID.- De status van de prototype-taak is niet
SUCCEEDED. Als deze nog loopt, wacht en probeer het opnieuw. Als deze is mislukt of geannuleerd, maak dan een nieuwe prototype-taak aan. - De prototype-taak is geslaagd, maar heeft geen afbeelding. Maak een nieuwe prototype-taak aan.
- Een
options-veld valt buiten de toegestane waarden, bijvoorbeeld eengrid_sizeanders dan16of32. piece_size_mmis10enshapeishex. Zeshoekige onderdelen zijn alleen beschikbaar in 6 en 8 mm.output.formatis niet3mf.
Het foutbericht geeft aan welk probleem er is gevonden.
- Name
401 - Unauthorized- Description
De API-sleutel ontbreekt of is ongeldig. Controleer de
Authorization-header.
- Name
402 - Payment Required- Description
Een van het volgende is van toepassing:
- Het account heeft onvoldoende credits.
- De API-sleutel, werkruimte of het lid heeft zijn creditlimiet bereikt.
- Het account heeft een gratis abonnement.
Controleer uw credits en abonnement en probeer het opnieuw.
- Name
403 - Forbidden- Description
Uw team heeft IP Filtering ingeschakeld, en Meshy heeft de afbeelding van de prototype-taak gemarkeerd wegens intellectueel eigendom van derden. Maak een prototype-taak aan vanuit een afbeelding waarvoor u de rechten heeft.
- Name
404 - Not Found- Description
input_task_idkomt niet overeen met een Fidget Pixel prototype-taak die uw account via de API heeft aangemaakt. Een prototype gemaakt in de web-app geeft ook404terug. Stuur deresult-ID uit een prototype-aanmaakrespons.
- Name
429 - Too Many Requests- Description
Een van deze limieten is bereikt:
- U hebt meer verzoeken verstuurd dan uw rate limit toestaat. Wacht een paar seconden en probeer het opnieuw. Zie Rate limits.
- Er staan te veel van uw taken in de wachtrij of lopen te veel. Wacht tot er een aantal zijn voltooid en probeer het opnieuw.
- Bij een onbeperkt abonnement zonder resterende credits heeft u het aantal taken bereikt dat zonder credits kan draaien. Wacht tot een taak is voltooid, of voeg credits toe.
- Name
500 - Internal Server Error- Description
Meshy is op een serverfout gestuit, bijvoorbeeld omdat de controle op intellectueel eigendom op de afbeelding van de prototype-taak niet kon worden uitgevoerd. Meshy maakt de taak niet aan en vergoedt eventuele in rekening gebrachte credits. Probeer het verzoek opnieuw.
Een Fidget Pixel-taak ophalen
Retourneert een prototype- of build-taak. Het pad moet overeenkomen met de fase van de taak. Een build-taak die via /prototype/:id wordt opgevraagd, geeft 404 terug, en hetzelfde geldt voor een prototype-taak die via /build/:id wordt opgevraagd.
Zie voor de velden Het Fidget Pixel prototype-taakobject en Het Fidget Pixel build-taakobject.
Request
# Prototype
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/prototype/019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
# Build
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/build/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Prototype Response
{
"id": "019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7",
"type": "creative-lab-fidget-pixel-prototype",
"name": "",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1757001000000,
"started_at": 1757001005000,
"finished_at": 1757001178000,
"expires_at": 1757260378000,
"preceding_tasks": 0,
"task_error": null,
"consumed_credits": 6,
"image_urls": [
"https://assets.meshy.ai/***/pixel-art.jpg?Expires=***"
]
}
Build Response
{
"id": "019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98",
"type": "creative-lab-fidget-pixel-build",
"name": "",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1757001300000,
"started_at": 1757001304000,
"finished_at": 1757001309000,
"expires_at": 1757260509000,
"preceding_tasks": 0,
"task_error": null,
"consumed_credits": 30,
"model_urls": {
"3mf": "https://assets.meshy.ai/***/tasks/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98/output/model.3mf?Expires=***"
}
}
Parameters
- Name
- id
- Type
- path
- Description
De taak-ID uit het aanmaakantwoord.
Retourneert
Het prototype-taakobject of het build-taakobject, overeenkomstig de fase in het pad.
Foutmodi
- Name
400 - Bad Request- Description
idis geen geldige taak-ID. Stuur deresult-ID uit het aanmaakantwoord.
- Name
403 - Forbidden- Description
Uw team heeft IP Filtering ingeschakeld, en Meshy heeft de afbeelding van de prototype-taak gemarkeerd wegens intellectueel eigendom van derden. Build-taken en teams in het Enterprise-plan krijgen deze foutmelding niet. Maak een prototype-taak aan met een afbeelding waarvoor u de gebruiksrechten heeft.
- Name
404 - Not Found- Description
Er bestaat geen Fidget Pixel-taak met deze ID voor uw account, of de fase van de taak komt niet overeen met het pad. Controleer de ID en gebruik
/prototypeof/buildom overeen te komen met de taak.
- Name
500 - Internal Server Error- Description
Meshy kon de controle op intellectueel eigendom niet uitvoeren. Probeer het verzoek opnieuw.
Delete a Fidget Pixel task
Annuleert een Fidget Pixel-taak. Het annuleren van een PENDING-taak restitueert de credits ervan. Een IN_PROGRESS-taak wordt geannuleerd zonder restitutie, omdat een worker er al mee is begonnen. Een taak met een definitieve status (SUCCEEDED, FAILED of CANCELED) kan niet worden geannuleerd.
Het pad moet overeenkomen met de fase van de taak. Bijvoorbeeld, DELETE op /prototype/:id met de ID van een build-taak geeft 404 terug.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/prototype/019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// Returns 204 No Content on success (empty body).
Pad-parameters
- Name
- id
- Type
- path
- Description
De ID van de taak die moet worden geannuleerd.
Retourneert
204 No Content met een lege body.
Faalmodi
- Name
400 - Bad Request- Description
Een van het volgende is van toepassing:
idis geen geldige taak-ID. Stuur deresult-ID uit de create-respons.- De taak heeft al een definitieve status (
SUCCEEDED,FAILEDofCANCELED), dus kan niet worden geannuleerd.
- Name
404 - Not Found- Description
Er bestaat geen Fidget Pixel-taak met deze ID die bij uw account hoort, of de fase van de taak komt niet overeen met het pad. Controleer de ID en gebruik
/prototypeof/buildom overeen te komen met de taak.
Een Fidget Pixel-taak streamen
Streamt de updates van een Fidget Pixel-taak als Server-Sent Events (SSE). Het pad moet overeenkomen met de fase van de taak. Zo niet, bijvoorbeeld de ID van een build-taak op /prototype/:id/stream, dan stuurt de stream één error-event met status_code: 404 en wordt deze gesloten. Een id die geen geldige taak-ID is, doet hetzelfde met status_code: 400.
Request
curl -N https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/build/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response Stream
// Error event example (wrong stage or task not found)
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message event examples illustrate task progress.
// Every frame is the full task object for the stage; fields not yet populated are null / empty.
event: message
data: {
"id": "019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98",
"type": "creative-lab-fidget-pixel-build",
"name": "",
"status": "PENDING",
"progress": 0,
"created_at": 1757001300000,
"started_at": null,
"finished_at": null,
"expires_at": 1757260500000,
"preceding_tasks": 2,
"task_error": null,
"consumed_credits": 30,
"model_urls": {}
}
event: message
data: {
"id": "019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98",
"type": "creative-lab-fidget-pixel-build",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1757001300000,
"started_at": 1757001304000,
"finished_at": 1757001309000,
"expires_at": 1757260509000,
"task_error": null,
"consumed_credits": 30,
"model_urls": {
"3mf": "https://assets.meshy.ai/***/tasks/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98/output/model.3mf?Expires=***"
}
}
Parameters
- Name
- id
- Type
- path
- Description
De taak-ID uit het antwoord van het aanmaken.
Retourwaarden
Een stream van prototype- of build-taakobjecten. Elke event bevat het volledige taakobject, zoals Een Fidget Pixel-taak ophalen dit retourneert. Zolang de taak PENDING of IN_PROGRESS is, zijn de uitvoervelden nog leeg (null, [] of {}), en is finished_at null.
Als IP-filtering het resultaat van de taak blokkeert, stuurt de stream in plaats daarvan één error-event, met de status_code die een get-verzoek zou retourneren.
Fidget Pixel-taken opvragen
Geeft uw Fidget Pixel-taken van één fase terug, één pagina per keer. Het pad bepaalt de fase. /prototype geeft alleen prototype-taken terug, en /build geeft alleen build-taken terug.
Request
# List prototype tasks
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/prototype?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
# List build tasks
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/build?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response (List Prototype Tasks)
[
{
"id": "019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7",
"type": "creative-lab-fidget-pixel-prototype",
"name": "",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1757001000000,
"started_at": 1757001005000,
"finished_at": 1757001178000,
"expires_at": 1757260378000,
"preceding_tasks": 0,
"task_error": null,
"consumed_credits": 6,
"image_urls": [
"https://assets.meshy.ai/***/pixel-art.jpg?Expires=***"
]
}
]
Padparameters
- Name
- stage
- Type
- path
- Verplicht
- Description
De op te vragen fase,
prototypeofbuild.
Queryparameters
- Name
- page_num
- Type
- integer
- standaard 1
- Description
De terug te geven pagina, van
1tot255.0geeft de eerste pagina terug. Een waarde buiten0tot255geeft400terug.
- Name
- page_size
- Type
- integer
- standaard 10
- Description
Aantal taken per pagina, tot
100. Een waarde van101tot255geeft 100 taken terug, en0gebruikt de standaardwaarde. Een waarde buiten0tot255geeft400terug.
- Name
- sort_by
- Type
- string
- standaard -created_at
- Description
De sorteervolgorde.
Beschikbare waarden:
-created_at: nieuwste eerst+created_at: oudste eerst
Retourwaarden
Een array van prototype-taakobjecten of build-taakobjecten, overeenkomend met de fase in het pad.
Het Fidget Pixel prototype-taakobject
Een prototype-taak zet een foto om in een pixel-art-afbeelding. Om de afbeelding om te zetten in 3D-printbare onderdelen, geef je de ID van de taak door aan de build-endpoint als input_task_id.
Eigenschappen
Example Fidget Pixel Prototype Task Object
{
"id": "019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7",
"type": "creative-lab-fidget-pixel-prototype",
"name": "",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1757001000000,
"started_at": 1757001005000,
"finished_at": 1757001178000,
"expires_at": 1757260378000,
"preceding_tasks": 0,
"task_error": null,
"consumed_credits": 6,
"image_urls": [
"https://assets.meshy.ai/***/pixel-art.jpg?Expires=***"
]
}
- Name
- id
- Type
- string
- Description
De taak-ID. Vertrouw niet op het formaat ervan.
- Name
- type
- Type
- string
- Description
Het taaktype, altijd
creative-lab-fidget-pixel-prototype.
- Name
- name
- Type
- string
- Description
De
namedie je hebt meegestuurd bij het aanmaken van de taak, of""als je er geen hebt meegestuurd.
- Name
- status
- Type
- string
- Description
De status van de taak.
Beschikbare waarden:
PENDING: wacht in de wachtrijIN_PROGRESS: resultaat wordt gegenereerdSUCCEEDED: definitief, met het resultaatFAILED: definitief, met de reden intask_errorCANCELED: definitief, zonder resultaat
- Name
- progress
- Type
- integer
- Description
Percentage van het voltooide werk, van
0tot100. Dit is0totdat de taak start en100wanneer deze slaagt.
- Name
- created_at
- Type
- timestamp
- Description
Tijdstip waarop de taak werd aangemaakt, in Unix-milliseconden.
- Name
- started_at
- Type
- timestamp
- Description
Tijdstip waarop een worker de taak startte, in Unix-milliseconden.
nulltot dan.
- Name
- finished_at
- Type
- timestamp
- Description
Tijdstip waarop de taak een definitieve status bereikte, in Unix-milliseconden.
nulltot dan.
- Name
- expires_at
- Type
- timestamp
- Description
Tijdstip waarop het resultaat van de taak verloopt, in Unix-milliseconden. Dit is 3 dagen na
finished_at, of 3 dagen nacreated_attotdat de taak voltooid is. Voor Enterprise-accounts, die API-resultaten onbeperkt bewaren, is dit ongeveer 100 jaar later. Zie Asset-retentie.
- Name
- preceding_tasks
- Type
- integer
- Description
De positie van de taak in de wachtrij terwijl deze
PENDINGis.1betekent dat deze als volgende start.0nadat de taak de wachtrij verlaat, en altijd0in lijstresultaten.
- Name
- task_error
- Type
- object
- Description
Waarom de taak is mislukt.
nulltenzijstatusgelijk is aanFAILED. Zie Fouten.
- Name
- consumed_credits
- Type
- integer
- Description
Aantal credits dat voor de taak in rekening is gebracht, na eventuele terugbetaling. Een verzoek dat een fout retourneert, wordt niet in rekening gebracht. Een mislukte taak is
0, omdat Meshy deze terugbetaalt. Annuleren betaalt een taak alleen terug terwijl dezePENDINGis. Als Meshy de kosten niet kan uitlezen, laat een get- of streamrespons het veld weg, en retourneert een lijstverzoek500. Probeer het verzoek in dat geval opnieuw.
- Name
- image_urls
- Type
- array of strings
- Description
Download-URL's voor de pixel-art-afbeelding. De array bevat één URL nadat de taak is geslaagd, en is leeg tot dan.
De URL's zijn ondertekend, dus haal ze op zonder een
Authorization-header. Ze blijven geldig totexpires_at. De taak opnieuw ophalen vóór die tijd levert dezelfde URL's op, niet opnieuw ondertekende. Een verlopen URL kan niet worden vernieuwd, dus download en bewaar de bestanden vóór die tijd.
Het Fidget Pixel build-taakobject
Een build-taak genereert de 3D-printbare onderdelen uit een geslaagde prototype-taak. Meshy bemonstert de pixelart-afbeelding op het raster en retourneert de onderdelen in één enkel multi-color 3MF-bestand.
Eigenschappen
Example Fidget Pixel Build Task Object
{
"id": "019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98",
"type": "creative-lab-fidget-pixel-build",
"name": "",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1757001300000,
"started_at": 1757001304000,
"finished_at": 1757001309000,
"expires_at": 1757260509000,
"preceding_tasks": 0,
"task_error": null,
"consumed_credits": 30,
"model_urls": {
"3mf": "https://assets.meshy.ai/***/tasks/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98/output/model.3mf?Expires=***"
}
}
- Name
- id
- Type
- string
- Description
De taak-ID. Vertrouw niet op het formaat ervan.
- Name
- type
- Type
- string
- Description
Het taaktype, altijd
creative-lab-fidget-pixel-build.
- Name
- name
- Type
- string
- Description
De
namedie je hebt meegestuurd toen je de taak hebt aangemaakt, of""als je er geen hebt meegestuurd.
- Name
- status
- Type
- string
- Description
De status van de taak.
Beschikbare waarden:
PENDING: wacht in de wachtrijIN_PROGRESS: genereert het resultaatSUCCEEDED: definitief, met het resultaatFAILED: definitief, met de reden intask_errorCANCELED: definitief, zonder resultaat
- Name
- progress
- Type
- integer
- Description
Percentage van het voltooide werk, van
0tot100. Dit is0totdat de taak begint en100wanneer deze slaagt.
- Name
- created_at
- Type
- timestamp
- Description
Tijdstip waarop de taak is aangemaakt, in Unix-milliseconden.
- Name
- started_at
- Type
- timestamp
- Description
Tijdstip waarop een worker de taak heeft gestart, in Unix-milliseconden.
nulltot dat moment.
- Name
- finished_at
- Type
- timestamp
- Description
Tijdstip waarop de taak een definitieve status heeft bereikt, in Unix-milliseconden.
nulltot dat moment.
- Name
- expires_at
- Type
- timestamp
- Description
Tijdstip waarop het resultaat van de taak verloopt, in Unix-milliseconden. Dit is 3 dagen na
finished_at, of 3 dagen nacreated_attotdat de taak voltooid is. Voor Enterprise-accounts, die API-resultaten onbeperkt bewaren, is dit ongeveer 100 jaar later. Zie Asset-retentie.
- Name
- preceding_tasks
- Type
- integer
- Description
De positie van de taak in de wachtrij terwijl deze
PENDINGis.1betekent dat deze als volgende start.0nadat de taak de wachtrij verlaat, en altijd0in lijstresultaten.
- Name
- task_error
- Type
- object
- Description
Waarom de taak is mislukt.
nulltenzijstatusgelijk is aanFAILED. Zie Fouten.
- Name
- consumed_credits
- Type
- integer
- Description
Aantal credits dat voor de taak in rekening is gebracht, na eventuele terugbetaling. Voor een verzoek dat een fout retourneert, worden geen kosten in rekening gebracht. Een mislukte taak is
0, omdat Meshy deze terugbetaalt. Annuleren betaalt een taak alleen terug terwijl dezePENDINGis. Als Meshy de kosten niet kan uitlezen, laat een get- of streamrespons het veld weg, en retourneert een lijstverzoek500. Probeer het verzoek in dat geval opnieuw.
- Name
- model_urls
- Type
- object
- Description
Download-URL's voor het resultaat, gesleuteld op bestandsformaat. Het object heeft één item, voor de
output.formatdie je hebt meegestuurd, en is leeg totdat de taak slaagt.De URL's zijn ondertekend, dus haal ze op zonder een
Authorization-header. Ze blijven geldig totexpires_at. Als je de taak vóór dat moment opnieuw ophaalt, krijg je dezelfde URL's terug, geen nieuw ondertekende. Een verlopen URL kan niet worden vernieuwd, dus download en bewaar de bestanden ervoor.- Name
3mf- Type
- string
- Description
Download-URL voor het multi-color 3MF-bestand. Elk onderdeel heeft een grijs lichaam en een bovenkant in de kleur van zijn pixel. Aanwezig wanneer
output.formatgelijk is aan3mf, wat de standaardwaarde is.
End-to-end voorbeeld
De volgende cURL- en Python-scripts voeren de volledige flow uit. Elk script maakt een prototype-taak aan op basis van een foto en wacht tot deze slaagt. Vervolgens maakt het een build-taak aan, wacht op die taak en downloadt het 3MF-bestand van model_urls.3mf.
Het cURL-script heeft curl en jq nodig, en het Python-script heeft het pakket requests nodig. Volg deze stappen om een script uit te voeren:
- Stel
MESHY_API_KEYin op uw API-sleutel. - Stel
IMAGE_PATHin op het pad van een lokale foto, ofIMAGE_URLop een openbare afbeeldings-URL. - Optioneel: om een ander onderwerp dan een persoon te pixeliseren, stelt u
PIXEL_TYPEin opother. - Voer het script uit.
Een prototype-taak is meestal binnen enkele minuten voltooid. Een build-taak is meestal ruim binnen een minuut voltooid.
Toon in uw app de afbeelding uit image_urls aan uw gebruiker voordat u de build-taak aanmaakt. Als ze deze niet mooi vinden, maak dan in plaats daarvan een nieuwe prototype-taak aan. Op deze manier besteedt u build-credits alleen aan een afbeelding die zij goedkeuren.
Complete flow
#!/usr/bin/env bash
set -euo pipefail
# Requires curl and jq. Point IMAGE_PATH at a local photo, or IMAGE_URL at a public one:
# export MESHY_API_KEY=msy_...
# export IMAGE_PATH=./portrait.jpg # or: export IMAGE_URL=https://...
# export PIXEL_TYPE=person # or: other
: "${MESHY_API_KEY:?export MESHY_API_KEY first}"
if [[ -z "${IMAGE_PATH:-}" && -z "${IMAGE_URL:-}" ]]; then
echo "export IMAGE_PATH (local file) or IMAGE_URL (public url) first" >&2
exit 1
fi
PIXEL_TYPE=${PIXEL_TYPE:-person}
BASE="https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1"
AUTH="Authorization: Bearer $MESHY_API_KEY"
# api METHOD URL [curl args...] -> prints the response body, non-zero on failure.
# Note we do not use -f/--fail: it discards the body, and the body is the only
# place the reason appears.
api() {
local method=$1 url=$2 out http_code body
shift 2
out=$(curl --silent --show-error --max-time 60 --write-out $'\n%{http_code}' \
-X "$method" "$url" -H "$AUTH" "$@") || return 1
http_code=${out##*$'\n'}
body=${out%$'\n'*}
if ((http_code >= 400)); then
echo "HTTP $http_code for $url: $body" >&2
return 1
fi
printf '%s' "$body"
}
# Each task gets its own 40-minute budget.
poll() {
local kind=$1 id=$2 delay=5 task_status deadline
deadline=$(($(date +%s) + 2400))
while :; do
if (($(date +%s) >= deadline)); then
echo "gave up waiting for $kind $id" >&2
return 1
fi
task_status=$(api GET "$BASE/$kind/$id" | jq -r '.status')
echo "$kind: $task_status"
case "$task_status" in
SUCCEEDED) return 0 ;;
FAILED | CANCELED) return 1 ;;
esac
sleep "$delay"
delay=$((delay * 2 > 30 ? 30 : delay * 2))
done
}
# Build the request body in a file. A base64 data URI must never go on the
# command line or into an exported variable - a photo of any real size will
# exceed the OS argument limit.
BODY=$(mktemp)
trap 'rm -f "$BODY"' EXIT
if [[ -n "${IMAGE_PATH:-}" ]]; then
# Declare the real type: the API accepts JPEG, PNG and WebP.
case "$(printf '%s' "${IMAGE_PATH##*.}" | tr 'A-Z' 'a-z')" in
png) MIME=image/png ;;
webp) MIME=image/webp ;;
*) MIME=image/jpeg ;;
esac
{
printf '{"type":"%s","image_url":"data:%s;base64,' "$PIXEL_TYPE" "$MIME"
base64 <"$IMAGE_PATH" | tr -d '\n'
printf '"}'
} >"$BODY"
else
jq -n --arg t "$PIXEL_TYPE" --arg u "$IMAGE_URL" \
'{type: $t, image_url: $u}' >"$BODY"
fi
# 1. Create the prototype task
PROTO_ID=$(api POST "$BASE/prototype" \
-H 'Content-Type: application/json' --data-binary @"$BODY" | jq -r '.result')
# 2. Wait for the pixel-art image (show image_urls[0] to a user in production)
poll prototype "$PROTO_ID"
# 3. Create the build task (defaults: square pieces, 32x32 grid, 8 mm, 8 colors, 15 mm tall)
jq -n --arg p "$PROTO_ID" \
'{input_task_id: $p, options: {shape: "square", grid_size: 32, piece_size_mm: 8, color_count: 8, piece_height_mm: 15}, output: {format: "3mf"}}' >"$BODY"
BUILD_ID=$(api POST "$BASE/build" \
-H 'Content-Type: application/json' --data-binary @"$BODY" | jq -r '.result')
# 4. Wait for the pieces
poll build "$BUILD_ID"
# 5. Download the 3MF. This is a signed URL: no Authorization header,
# and it stays valid for 3 days after the task finishes.
TASK=$(api GET "$BASE/build/$BUILD_ID")
curl --silent --show-error --fail --max-time 900 \
-o fidget-pixel.3mf "$(jq -r '.model_urls["3mf"]' <<<"$TASK")"
echo "Done: fidget-pixel.3mf"