lowpoly zostanie wycofany 30 paź 2026. Zmień model przed tymi datami, aby uniknąć błędów żądań.

Remesh API

Remesh API umożliwia remesh oraz eksportowanie istniejących modeli 3D wygenerowanych przez inne API Meshy (takie jak Obraz na 3D lub Tekst na 3D) do różnych formatów. Ta sekcja zawiera szczegóły dotyczące korzystania z Remesh API.


POST/openapi/v1/remesh

Create a Remesh Task

Ten punkt końcowy tworzy nowe zadanie remesh.

Zadanie jest wykonywane w tle. Informacje o zazwyczaj wymaganym czasie znajdziesz w Czasach przetwarzania.

Parametry

  • Name
    input_task_id
    Type
    string
    Wymagane
    Description

    ID ukończonego zadania Obraz na 3D lub Tekst na 3D, które chcesz poddać remesh. Zadanie to musi być jednym z poniższych: Tekst na 3D Preview, Tekst na 3D Refine, Obraz na 3D lub Reteksturowanie. Dodatkowo musi mieć status SUCCEEDED.

  • Name
    model_url
    Type
    string
    Wymagane
    Description

    Podaj model 3D, który Meshy ma poddać remesh, za pomocą publicznie dostępnego adresu URL lub identyfikatora data URI. Obsługiwane formaty: .glb, .gltf, .obj, .fbx, .stl.

    W przypadku Data URI użyj typu MIME: application/octet-stream.

    Maksymalny rozmiar pliku: 400 MB dla adresu URL typu http lub https, 100 MB dla identyfikatora data:.

    Plik GLB, glTF, FBX lub OBJ większy niż 100 MB może mieć maksymalnie 10 000 000 ścian. Ściany są liczone jako trójkąty: czworokąt liczy się jako 2, a siatka narysowana więcej niż raz liczy się raz na każdą kopię. Powyżej 100 MB plik FBX musi być binarnym FBX w wersji 7.1 lub nowszej, a plik GLB lub glTF nie może używać kompresji Draco.

  • Name
    target_formats
    Type
    string[]
    domyślne ["glb"]
    Description

    Lista formatów docelowych dla modelu po remesh. Jeśli pominięto, generowany jest tylko format GLB.

    Dostępne wartości: glb, fbx, obj, usdz, blend, stl, 3mf.

  • Name
    topology
    Type
    string
    domyślne triangle
    Description

    Określa topology wygenerowanego modelu.

    Dostępne wartości:

    • quad: Generuje siatkę z przewagą czworokątów.
    • triangle: Generuje zdecymowaną siatkę trójkątną.
  • Name
    target_polycount
    Type
    integer
    domyślne 30,000
    Description

    Określa docelową liczbę wielokątów w wygenerowanym modelu. Rzeczywista liczba wielokątów może odbiegać od wartości docelowej w zależności od złożoności geometrii.

    Prawidłowy zakres to od 100 do 300 000 (włącznie).

  • Name
    decimation_mode
    Type
    integer
    Description

    Włącza adaptacyjną decymację poprzez ustawienie poziomu liczby wielokątów. Gdy ta wartość jest ustawiona, target_polycount jest ignorowane.

    Dostępne wartości:

    • 1: Adaptacyjna — bardzo duża liczba wielokątów.
    • 2: Adaptacyjna — duża liczba wielokątów.
    • 3: Adaptacyjna — średnia liczba wielokątów.
    • 4: Adaptacyjna — mała liczba wielokątów.
  • Name
    resize_height
    Type
    number
    ⚠ przestarzałe
    domyślne 0
    Description

    Zmienia rozmiar modelu do określonej wysokości mierzonej w metrach. Zalecamy korzystanie z dedykowanego Resize API.

  • Name
    resize_longest_side
    Type
    number
    ⚠ przestarzałe
    domyślne 0
    Description

    Zmienia rozmiar modelu tak, aby najdłuższy wymiar jego bounding-box był równy podanej wartości w metrach. Zalecamy korzystanie z dedykowanego Resize API.

  • Name
    auto_size
    Type
    boolean
    ⚠ przestarzałe
    domyślne false
    Description

    Gdy ustawione na true, usługa wykorzystuje wizję AI do automatycznego oszacowania rzeczywistej wysokości obiektu i odpowiedniego dostosowania rozmiaru modelu. Zalecamy korzystanie z dedykowanego Resize API.

Dotyczy tylko gdy auto_size = true
  • Name
    origin_at
    Type
    string
    ⚠ przestarzałe
    domyślne bottom
    Description

    Pozycja punktu początkowego. Zalecamy korzystanie z dedykowanego Resize API.

    Dostępne wartości: bottom, center.

  • Name
    convert_format_only
    Type
    boolean
    ⚠ przestarzałe
    Description

    Jeśli true, usługa zmieni jedynie format pliku modelu wejściowego, ignorując inne dane wejściowe, takie jak topology, resize_height i target_polycount. Zalecamy korzystanie z dedykowanego Convert API.

  • Name
    alpha_thumbnail
    Type
    boolean
    domyślne false
    Description

    Gdy ustawione na true, zadanie dodatkowo renderuje wersję podglądu z przezroczystym tłem (RGBA) i zwraca ją jako alpha_thumbnail_url w odpowiedzi GET. Istniejące pole thumbnail_url pozostaje bez zmian.

Zwracane wartości

Właściwość result odpowiedzi zawiera id nowo utworzonego zadania remesh.

Tryby niepowodzenia

  • Name
    400 - Bad Request
    Description

    Żądanie było nieprawidłowe. Typowe przyczyny:

    • Brakujący parametr: Należy podać model_url lub input_task_id.
    • Nieprawidłowe zadanie wejściowe: input_task_id musi odnosić się do zakończonego powodzeniem zadania z obsługiwanego modelu.
    • Nieprawidłowy format modelu: model_url wskazuje plik o nieobsługiwanym rozszerzeniu.
    • Niedostępny adres URL: Nie udało się pobrać pliku spod model_url.
    • Plik modelu zbyt duży: Plik pod model_url przekracza 400 MB (adres URL http lub https) lub 100 MB (identyfikator data:).
    • Zbyt wiele ścian: Plik pod model_url ma rozmiar powyżej 100 MB i ponad 10 000 000 ścian. Zmniejsz liczbę ścian i wyślij plik ponownie.
    • ASCII FBX powyżej 100 MB: Plik pod model_url to ASCII FBX powyżej 100 MB. Wyślij go jako binarny FBX lub GLB.
    • Nieodczytywalny plik modelu: Plik pod model_url ma rozmiar powyżej 100 MB, a jego nagłówka nie można odczytać, na przykład jest to GLB lub glTF skompresowany Draco, albo binarny FBX starszy niż 7.1.
    • Nagłówek modelu zbyt złożony: Plik pod model_url ma rozmiar powyżej 100 MB, a jego nagłówek zawiera zbyt wiele siatek, węzłów lub rekordów do sprawdzenia. Zmniejsz liczbę obiektów w pliku i wyślij go ponownie.
    • Nieprawidłowe topology: Parametr topology jest nieprawidłowy.
    • Parametry wzajemnie wykluczające się: Nie można ustawić jednocześnie auto_size i resize_height.
  • Name
    401 - Unauthorized
    Description

    Uwierzytelnianie nie powiodło się. Sprawdź swój klucz API.

  • Name
    402 - Payment Required
    Description

    Niewystarczająca liczba kredytów do wykonania tego zadania.

  • Name
    429 - Too Many Requests
    Description

    Przekroczono limit szybkości.

Request

POST
/openapi/v1/remesh
# Basic remesh with custom formats and resize
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "target_formats": ["glb", "fbx"],
    "topology": "quad",
    "target_polycount": 50000,
    "resize_height": 1.0,
    "origin_at": "bottom"
  }'

# Quad remesh with auto-size
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "target_formats": ["glb", "fbx"],
    "topology": "quad",
    "target_polycount": 50000,
    "auto_size": true
  }'

Response

{
  "result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}

GET/openapi/v1/remesh/:id

Pobierz zadanie Remesh

Ten punkt końcowy pobiera zadanie remesh na podstawie jego ID.

Parametry

  • Name
    id
    Type
    path
    Description

    ID zadania remesh do pobrania.

Zwraca

Obiekt zadania Remesh.

Request

GET
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "remesh",
  "model_urls": {
      "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
      "fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
      "obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
      "usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
      "blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
      "stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": null,
}

DELETE/openapi/v1/remesh/:id

Usuwanie zadania Remesh

Ten punkt końcowy trwale usuwa zadanie remesh, w tym wszystkie powiązane modele i dane. Ta operacja jest nieodwracalna.

Parametry ścieżki

  • Name
    id
    Type
    path
    Description

    ID zadania remesh, które ma zostać usunięte.

Status zadania

Zadanie, które nadal ma status PENDING, jest usuwane, a kredyty pobrane w momencie utworzenia są zwracane.

Zadania, które ma już status IN_PROGRESS, nie można usunąć: żądanie zostaje odrzucone z kodem 409 Conflict, a zadanie nadal się wykonuje. Kredyty za zadanie, które worker już rozpoczął przetwarzać, nie podlegają zwrotowi, więc usunięcie go w trakcie wykonywania kosztowałoby Cię zarówno kredyty, jak i wynik. Poczekaj, aż osiągnie ono status SUCCEEDED, FAILED lub CANCELED, a następnie je usuń.

Zadanie w stanie końcowym (SUCCEEDED, FAILED lub CANCELED) jest usuwane bez zwrotu kredytów.

Zwracane wartości

Zwraca 200 OK w przypadku powodzenia lub 409 Conflict, gdy zadanie ma status IN_PROGRESS.

Request

DELETE
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
  -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 is left 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."
}

GET/openapi/v1/remesh

List Remesh Tasks

Ten punkt końcowy umożliwia pobranie listy zadań Remesh.

Parametry

  • Name
    page_num
    Type
    integer
    domyślne 1
    Description

    Numer strony do stronicowania.

  • Name
    page_size
    Type
    integer
    domyślne 10
    Description

    Limit rozmiaru strony. Maksymalna dozwolona wartość to 100 elementów.

  • Name
    sort_by
    Type
    string
    Description

    Pole, według którego ma nastąpić sortowanie.

    Dostępne wartości:

    • +created_at: Sortuj według czasu utworzenia rosnąco.
    • -created_at: Sortuj według czasu utworzenia malejąco.

Zwraca

Zwraca stronicowaną listę Obiektów zadania Remesh.

Request

GET
/openapi/v1/remesh
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
    "type": "remesh",
    "model_urls": {
      "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
      "fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
      "obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
      "usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
      "blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
      "stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
    },
    "progress": 100,
    "status": "SUCCEEDED",
    "created_at": 1699999999000,
    "started_at": 1700000000000,
    "finished_at": 1700000001000,
    "task_error": null
  }
]

GET/openapi/v1/remesh/:id/stream

Strumieniowanie zadania Remesh

Ten punkt końcowy strumieniuje aktualizacje zadania Remesh w czasie rzeczywistym za pomocą Server-Sent Events (SSE).

Parametry

  • Name
    id
    Type
    path
    Description

    Unikalny identyfikator zadania Remesh do strumieniowania.

Zwraca

Zwraca strumień Obiektów zadania Remesh jako Server-Sent Events.

W przypadku zadań PENDING lub IN_PROGRESS strumień odpowiedzi będzie zawierał tylko niezbędne pola progress i status.

Request

GET
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/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.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
event: message
data: {
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "remesh",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
    "fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
    "usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
    "blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
    "stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
  },
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": null,
}

Obiekt zadania Remesh

Obiekt zadania Remesh reprezentuje jednostkę pracy, której Meshy używa do wykonania remeshingu i eksportu istniejącego modelu 3D do różnych formatów. Obiekt ma następujące właściwości:

Właściwości

  • Name
    id
    Type
    string
    Description

    Unikalny identyfikator zadania. Chociaż jako szczegół implementacyjny używamy k-sortowalnego UUID dla identyfikatorów zadań, nie należy przyjmować żadnych założeń co do formatu tego identyfikatora.

  • Name
    type
    Type
    string
    Description

    Typ zadania Remesh. Wartość to remesh.

  • Name
    model_urls
    Type
    object
    Description

    Adres URL do pobrania pliku modelu 3D z teksturami wygenerowanego przez Meshy. Właściwość dla danego formatu zostanie pominięta, jeśli dany format nie został wygenerowany, zamiast zwracać pusty ciąg znaków.

    • Name
      glb
      Type
      string
      Description

      Adres URL do pobrania pliku GLB.

    • Name
      fbx
      Type
      string
      Description

      Adres URL do pobrania pliku FBX.

    • Name
      obj
      Type
      string
      Description

      Adres URL do pobrania pliku OBJ.

    • Name
      usdz
      Type
      string
      Description

      Adres URL do pobrania pliku USDZ.

    • Name
      blend
      Type
      string
      Description

      Adres URL do pobrania pliku Blender.

    • Name
      stl
      Type
      string
      Description

      Adres URL do pobrania pliku STL.

    • Name
      3mf
      Type
      string
      Description

      Adres URL do pobrania pliku 3MF. Obecny tylko wtedy, gdy 3mf zostało zażądane poprzez target_formats.

  • Name
    thumbnail_url
    Type
    string
    Description

    Adres URL do pobrania podglądu obrazu wyrenderowanego z modelu po remeshingu.

  • Name
    alpha_thumbnail_url
    Type
    string
    Description

    Adres URL do pobrania wersji thumbnail_url z przezroczystym tłem (RGBA). Obecny tylko wtedy, gdy zadanie zostało utworzone z alpha_thumbnail: true, a przezroczysty podgląd został pomyślnie wyrenderowany; w przeciwnym razie to pole jest pomijane.

  • Name
    progress
    Type
    integer
    Description

    Postęp zadania. Jeśli zadanie jeszcze się nie rozpoczęło, ta właściwość będzie miała wartość 0. Gdy zadanie zakończy się powodzeniem, wartość ta zmieni się na 100.

  • Name
    status
    Type
    string
    Description

    Status zadania. Możliwe wartości to jedna z: PENDING, IN_PROGRESS, SUCCEEDED, FAILED.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Liczba zadań poprzedzających.

  • Name
    created_at
    Type
    timestamp
    Description

    Znacznik czasu utworzenia zadania, w milisekundach.

  • Name
    started_at
    Type
    timestamp
    Description

    Znacznik czasu rozpoczęcia zadania, w milisekundach. Jeśli zadanie jeszcze się nie rozpoczęło, ta właściwość będzie miała wartość 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Znacznik czasu zakończenia zadania, w milisekundach. Jeśli zadanie jeszcze się nie zakończyło, ta właściwość będzie miała wartość 0.

  • Name
    task_error
    Type
    object
    Description

    Szczegóły błędu dla nieudanych zadań. Pełny opis obiektu task_error znajdziesz w sekcji Błędy.

  • Name
    consumed_credits
    Type
    integer
    Description

    Liczba kredytów zużytych przez to zadanie. Obecna, gdy status zadania to PENDING, IN_PROGRESS lub SUCCEEDED. Zwraca 0 dla zadań FAILED (kredyty są zwracane w przypadku niepowodzenia).

Example Remesh Task Object

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "remesh",
  "model_urls": {
      "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
      "fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
      "obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
      "usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
      "blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
      "stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
  },
  "progress": 100,
  "status": "SUCCEEDED",
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": {

    "message": ""

  },

  "consumed_credits": 5
}