Ang mga generation task ng Meshy API (Text to 3D, Image to 3D, Rigging, at iba pa) ay tumatakbo nang asynchronous — nagpapasa ka ng task at pagkatapos ay kailangang malaman kung kailan ito tapos bago kunin ang resulta. Ipapaliwanag ng artikulong ito ang task lifecycle at ang dalawang sinusuportahang paraan para malaman kung kailan natapos ang isang task: polling at webhooks — pati na rin kung paano iwasan ang pinakakaraniwang isyu na "errors retrieving the model".
Task lifecycle
Bawat generation task ay dumadaan sa isang maliit na hanay ng mga estado, na ibinabalik sa status field ng task object:
PENDING— naka-queue na ang task pero hindi pa nagsisimula ang pagproseso.IN_PROGRESS— aktwal na pinoproseso ang task. Angprogressfield (0-100) ay tumaas habang nagpapatuloy ang trabaho.SUCCEEDED— matagumpay na natapos ang task at angprogressay 100. available na ngayon ang mga result URL (model files, textures, previews) sa response.FAILED— hindi natapos ang task. Automatic na naire-refund ang credits para sa mga nabigong task.CANCELED— na-cancel ang task bago ito natapos.
Ang pinakamahalagang tuntunin kapag nag-i-integrate sa API: huwag subukang kunin o gamitin ang mga result URL hangga't ang status ng task ay hindi pa SUCCEEDED. Ang pagbasa ng mga result habang PENDING o IN_PROGRESS pa ang task ang pinakakaraniwang sanha ng mga ulat na "errors retrieving the model".
Polling sample
Ang polling ay nangangahulugang paulit-ulit na pagtawag sa "get task" endpoint para sa iyong task ID hanggang maabot nito ang isang terminal state (SUCCEEDED, FAILED, o CANCELED). Ganito ang hitsura ng isang simpleng polling loop:
Ipasa ang generation request at i-store ang ibinalik na task
id.Tawagin ang kaukulang "retrieve task" endpoint (halimbawa, ang Text to 3D o Image to 3D task-by-id endpoint) sa isang agwat — ilang segondo ang karaniwan.
Tingnan ang
statusfield sa bawat response. Patuloy na mag-poll habangPENDINGoIN_PROGRESSito.Itigil ang polling sa sandaling ang
statusaySUCCEEDED(basahin ang mga result URL),FAILED, oCANCELED.Magdagdag ng makatwirang timeout/max-attempts guard sa iyong client upang hindi mag-poll magpakailanman ang isang naiwang task.
Ang polling ay simple at gumagana nang maayos para sa mga script, batch job, at mababang-volume na integration. Para sa mataas na volume o latency-sensitive na mga integration, ang webhook ay karaniwang mas angkop.
Webhook setup
Sa halip na paulit-ulit na itanong na "tapos na ba ito?", maaari mong hilingin sa Meshy na i-notify ang iyong server sa sandaling matapos ang isang task. Para gumamit ng webhooks:
I-configure ang isang webhook (callback) URL na maabot ng Meshy — karaniwang itinatakda ito sa antas ng account/API settings o ipinapasa bilang parameter sa generation request, depende sa endpoint.
Siguraduhing publicly reachable ang iyong endpoint sa pamamagitan ng HTTPS at kumakasa ito nang mabilis (magbalik agad ng 2xx status, pagkatapos ay iproseso nang asynchronous ang payload).
Kapag naabot ng task ang isang terminal state, nagpapadala ang Meshy ng payload sa iyong endpoint na naglalaman ng task
idat ang pinal nitongstatus.Sa pagkatanggap, hanapin ang buong detalye ng task gamit ang
idsa pamamagitan ng API sa halip na magtiwala lamang sa webhook body, upang masiguro na mayroon kang awtoritatibo at napapanahong resulta.
Binabawasan ng mga webhook ang mga di-kailangang API call at nagbibigay ng halos instant na notification, ngunit dapat ka pa ring magpanatili ng pana-panahong polling fallback para sa mga task kung saan maaaring ma-miss o madeley ang webhook delivery (hal. dahil sa pansamantalang network issue sa iyong panig).
Idempotency
Anuman ang gamitin mo — polling o webhooks — ang iyong result-handling code ay dapat idempotent — ligtas itong patakbuhin nang higit sa isang beses para sa parehong task nang walang side effects. Mahalaga ito dahil:
Maaaring i-deliver nang higit sa isang beses ang isang webhook para sa parehong task (mga retry sa panig ng sender, network duplication, atbp.).
Maaaring sabay na subukang i-proseso ng isang polling loop at ng isang webhook handler ang parehong natapos na task kung pareho silang tumatakbo.
Para mapanatiling idempotent, gawing basehan ng iyong processing logic ang task id — halimbawa, tingnan muna kung naka-store/na-download mo na ang mga resulta para sa id na iyon bago ito ulitin, at gawing isang atomic step ang "mark as processed" sa iyong sariling database.
status = SUCCEEDED
Ang response na may "status": "SUCCEEDED" at "progress": 100 ang tanging senyales na garantisadong kumpleto at ligtas nang gamitin ang result payload (model URLs, textures, thumbnails). Sa konkreto, sa iyong code:
I-verify na
status === "SUCCEEDED"bago magbasa ng anuman mula sa mgaresult/model URL field.Huwag umasa sa
progresslamang — laging tingnan din angstatus, dahil maaaring pansamantalang magpakita ang progress ng mataas na halaga bago ganap na ma-finalize ang task.I-download agad ang mga result file kapag
SUCCEEDEDna — ang mga generated asset ay pinapanatili lamang sa mga server ng Meshy sa loob ng limitadong panahon, pagkatapos nito ay hindi na magre-resolve ang mga URL.
Common errors
Karamihan sa mga ulat na "hindi ko ma-retrieve ang model ko" ay nauuwi sa isa sa mga sanhang ito:
Pagkuha nang masyadong maaga. Pagtawag sa result URL, o pagbasa ng mga model field, bago pa maging
SUCCEEDEDangstatus. Ito ang pinakamadalas na sanha sa lahat.Expired na mga asset. Paghihintay nang masyadong matagal pagkatapos ng
SUCCEEDEDbago mag-download — tumitigil ang paggana ng mga result URL pagkatapos ng retention window para sa uri ng task na iyon.Paggamit ng stale o maling task ID — halimbawa, muling paggamit ng ID mula sa naunang, magkaibang request.
Pagturing sa
FAILEDbilang pansamantalang estado at pagpapatuloy ng pag-poll sa isang task na nabigo na sana sa halip na muling magpasa.Mga network/timeout issue sa pagitan ng iyong server at Meshy na nabibigyang-mali ng kahulugan bilang problema sa generation.
Retries
Kung hindi nakasalalay sa iyong inaasahan ang isang generation, o bumigo nang tuluyan ang isang request, tandaan ang mga sumusunod:
Kasalukuyang hindi sinusuportahan ng Meshy API ang pag-retry ng isang umiiral na task nang in-place — para subukang muli, magpasa ng bagong generation request, na normal na gagamit ng credits.
Para sa mga pansamantalang network failure kapag tumatawag sa API (mga timeout, 5xx responses), makatuwiran ang maikling exponential backoff bago muling isumite ang request.
Para sa polling mismo, i-retry ang "get task" call sa mga pansamantalang network error, ngunit huwag ituring na generation failure ang isang beses na pagbigong poll — magtiwala lamang sa
statusfield kapag nakatanggap ka na ng matagumpay na response.Kung kailangan mo ng built-in na retry functionality para sa mga generation, makipag-ugnayan sa sales team ng Meshy tungkol sa mga enterprise plan option.
FAQ
1. Bakit consistent akong nakakakuha ng mga error kapag kumukuha ng mga model mula sa generation result sa pamamagitan ng API?
Halos palaging nangyayari ito dahil sinusubukan ng code na basahin ang resulta bago pa natatapos ang task. Laging kumpirmahing SUCCEEDED ang status (at 100 ang progress) bago kunin ang mga model URL.
2. Dapat ba akong gumamit ng polling o webhooks?
Ang polling ay mas simple ang setup at sapat na para sa mababang volume o one-off na mga script. Mas mainam ang webhooks para sa mga production integration na maraming sabay-sabay na task, dahil iniiwasan nila ang mga di-kailangang paulit-ulit na request agad kang nire-notify kapag natapos ang isang task.
3. Ano ang dapat gawin ng server ko kung tumanggap ito ng parehong webhook nang dalawang beses?
I-handle ito nang idempotent — tingnan ang task id laban sa mga naproseso mo na, at laktawan ang muling pagproseso kung na-handle na ito.
4. Hindi dumating ang webhook ko — ano ang dapat kong gawin?
Bumalik sa pag-poll ng task nang direkta gamit ang id. Kumpirmahin din na publicly reachable ang iyong endpoint sa pamamagitan ng HTTPS at bumabalik ito nang mabilis na 2xx response, dahil ang mabagal o hindi maabot na mga endpoint ay maaaring magsanhi ng mga isyu sa delivery.
5. Maaari ko bang i-retry ang isang nabigong o hindi kasiya-siyang generation nang direkta sa pamamagitan ng API?
Hindi pa sa kasalukuyan — kailangan mong magpasa ng bagong generation request, na normal na gagamit ng credits. Makipag-ugnayan sa sales tungkol sa mga enterprise option kung kailangan mo ng built-in na retry support.
6. Gaano katagal ako may oras para i-download ang mga resulta ko pagkatapos maging SUCCEEDED ang status?
Pinapanatili lamang ang mga result file sa mga server ng Meshy sa loob ng limitadong panahon pagkatapos matapos ang isang task, kaya i-download ang mga output sa iyong sariling storage sa lalong madaling panahon kapag matagumpay ang task sa halip na maghintay.