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

Remesh API

Przebuduj siatkę modelu 3D z nową topology i liczbą ścian, a następnie wyeksportuj ją w wybranych formatach. Model może pochodzić z innego zadania Meshy, takiego jak Obraz na 3D lub Tekst na 3D, albo z pliku modelu.


POST/openapi/v1/remesh

Utwórz zadanie Remesh

Tworzy zadanie Remesh. Zadanie jest wykonywane w tle. Informacje o tym, jak długo zwykle trwa zadanie, znajdziesz w sekcji Czasy przetwarzania.

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"
}

Parametry

  • Name
    input_task_id
    Type
    string
    Wymagane
    Description

    Wymagane, chyba że wyślesz model_url. ID zadania, którego model chcesz poddać operacji remesh, na przykład zadania Tekst na 3D, Obraz na 3D, Reteksturowanie lub Remesh. Zadanie musi być utworzone przez Ciebie za pomocą API i mieć status SUCCEEDED.

  • Name
    model_url
    Type
    string
    Wymagane
    Description

    Wymagane, chyba że wyślesz input_task_id. Model do remeshu, podany jako publiczny URL lub data URI. Jeśli wyślesz oba, Meshy użyje input_task_id.

    Model musi być plikiem GLB, glTF, OBJ, FBX lub STL o rozmiarze maksymalnie 400 MB, jeśli pochodzi z adresu http lub https, lub 100 MB, jeśli jest przesyłany jako data URI. W przypadku data URI użyj typu MIME application/octet-stream.

    Plik przekraczający 100 MB musi dodatkowo spełniać następujące zasady:

    • Plik GLB, glTF, FBX lub OBJ może mieć maksymalnie 10 000 000 ścianek. Meshy liczy ścianki jako trójkąty, więc czworokąt liczony jest jako 2, a siatka narysowana więcej niż raz liczona jest raz na każdą kopię.
    • Plik FBX musi być binarnym plikiem FBX 7.1 lub nowszym.
    • Plik GLB lub glTF nie może używać kompresji Draco.
  • Name
    target_formats
    Type
    string[]
    domyślne ["glb"]
    Description

    Formaty plików do wygenerowania.

    Dostępne wartości:

    • glb
    • fbx
    • obj
    • usdz
    • blend
    • stl
    • 3mf
  • Name
    topology
    Type
    string
    domyślne triangle
    Description

    Typ ścianek modelu po remeshu.

    Dostępne wartości:

    • quad: siatka z przewagą czworokątów
    • triangle: zdecymowana siatka trójkątna
  • Name
    target_polycount
    Type
    integer
    domyślne 30000
    Description

    Docelowa liczba ścianek, od 100 do 300000. Wynik może różnić się od wartości docelowej, w zależności od geometrii modelu. Wartość spoza tego zakresu zwraca 400.

  • Name
    decimation_mode
    Type
    integer
    Description

    Adaptacyjna liczba ścianek, według poziomu. Gdy ustawisz ten parametr, Meshy ignoruje target_polycount.

    Dostępne wartości:

    • 1: ultra
    • 2: wysoki
    • 3: średni
    • 4: niski
  • Name
    resize_height
    Type
    number
    ⚠ przestarzałe
    domyślne 0
    Description

    Zamiast tego użyj Resize API. Wysokość, do której ma zostać przeskalowany model, w metrach. Wyślij co najwyżej jeden z parametrów resize_height, resize_longest_side i auto_size.

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

    Zamiast tego użyj Resize API. Długość, do której ma zostać przeskalowany najdłuższy bok prostopadłościanu ograniczającego modelu, w metrach. Wyślij co najwyżej jeden z parametrów resize_height, resize_longest_side i auto_size.

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

    Zamiast tego użyj Resize API. Czy oszacować rzeczywistą wysokość obiektu za pomocą wizji AI i przeskalować model do niej. Wyślij co najwyżej jeden z parametrów resize_height, resize_longest_side i auto_size.

  • Name
    origin_at
    Type
    string
    ⚠ przestarzałe
    domyślne bottom
    Description

    Zamiast tego użyj Resize API. Gdzie umieścić punkt początkowy modelu, bottom lub center. Wartość domyślna obowiązuje, gdy wyślesz resize_height, resize_longest_side lub auto_size. Bez żadnego z nich Meshy przesuwa punkt początkowy tylko wtedy, gdy wyślesz origin_at.

  • Name
    convert_format_only
    Type
    boolean
    ⚠ przestarzałe
    Description

    Zamiast tego użyj Convert API. Czy tylko skonwertować model na target_formats. Gdy true, Meshy ignoruje topology, target_polycount, decimation_mode, resize_height, resize_longest_side i auto_size, ale nadal sprawdza ich wartości, więc nieprawidłowa wartość zwraca 400. Przy convert_format_only: true pusty lub null target_formats zwraca 400.

  • Name
    alpha_thumbnail
    Type
    boolean
    domyślne false
    Description

    Czy wygenerować również podgląd z przezroczystym tłem (RGBA), zwracany w alpha_thumbnail_url podczas pobierania zadania. thumbnail_url się nie zmienia.

Zwracane dane

Pole result odpowiedzi zawiera ID nowego zadania Remesh.

Tryby niepowodzenia

  • Name
    400 - Bad Request
    Description

    Żądanie nie może zostać wykonane. Komunikat o błędzie wskazuje, jaki problem wystąpił. Na przykład:

    • Brakujący parametr: Nie wysłano ani model_url, ani input_task_id.
    • Nieprawidłowe zadanie wejściowe: input_task_id nie jest zakończonym powodzeniem zadaniem API lub jego model AI nie obsługuje remeshu.
    • Nieprawidłowy format modelu: Plik model_url ma nieobsługiwane rozszerzenie.
    • Nieosiągalny URL: Meshy nie może pobrać pliku model_url.
    • Plik modelu zbyt duży: Plik model_url przekracza 400 MB, jeśli pochodzi z adresu http lub https, lub 100 MB jako data URI.
    • Zbyt wiele ścianek: Plik model_url przekracza 100 MB i ma więcej niż 10 000 000 ścianek. Zmniejsz liczbę ścianek i wyślij plik ponownie.
    • ASCII FBX powyżej 100 MB: Plik model_url to plik ASCII FBX przekraczający 100 MB. Wyślij go jako binarny FBX lub GLB.
    • Nieczytelny plik modelu: Plik model_url przekracza 100 MB, a Meshy nie może odczytać jego nagłówka. Na przykład jest to plik GLB lub glTF skompresowany Draco, albo binarny plik FBX starszy niż 7.1.
    • Nagłówek modelu zbyt złożony: Plik model_url przekracza 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łowa topologia: topology nie jest quad ani triangle.
    • Wzajemnie wykluczające się parametry: Żądanie zawiera więcej niż jeden z parametrów auto_size, resize_height i resize_longest_side. Wyślij tylko jeden z nich.

    Popraw żądanie i wyślij je ponownie. Zobacz Błędy.

  • Name
    401 - Unauthorized
    Description

    Brakuje klucza API lub jest on nieprawidłowy. Sprawdź nagłówek Authorization.

  • Name
    402 - Payment Required
    Description

    Na przykład:

    • Niewystarczające kredyty: Konto nie ma wystarczającej liczby kredytów na to zadanie lub konto osiągnęło limit kredytów. Sprawdź saldo kredytów, a następnie spróbuj ponownie.
    • Plan darmowy: Tworzenie zadania wymaga płatnego planu. Uaktualnij swój plan w ustawieniach subskrypcji, a następnie spróbuj ponownie.
  • Name
    403 - Forbidden
    Description

    input_task_id wskazuje model płaskorzeźby, którego ten punkt końcowy nie może poddać remeshowi. Komunikat brzmi This model type does not support this operation. Wyślij inny model.

  • Name
    404 - Not Found
    Description

    input_task_id nie pasuje do żadnego z Twoich zadań. Sprawdź ID zadania i wyślij żądanie ponownie.

  • Name
    429 - Too Many Requests
    Description

    Przekroczono limit szybkości. Poczekaj, a następnie spróbuj ponownie. Zobacz Limity szybkości.


GET/openapi/v1/remesh/:id

Pobierz zadanie Remesh

Zwraca zadanie Remesh na podstawie jego ID.

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
}

Parametry

  • Name
    id
    Type
    path
    Description

    ID zadania z odpowiedzi tworzenia.

Zwraca

Obiekt zadania Remesh.


DELETE/openapi/v1/remesh/:id

Usuń zadanie Remesh

Trwale usuwa zadanie Remesh, w tym jego modele i dane. Nie można cofnąć usunięcia.

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 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 ścieżki

  • Name
    id
    Type
    path
    Description

    ID zadania do usunięcia.

Status zadania

Usunięcie zadania o statusie PENDING zwraca kredyty, które zostały wykorzystane podczas jego tworzenia.

Zadania o statusie IN_PROGRESS nie można usunąć. Żądanie zwraca 409 Conflict, a zadanie nadal się wykonuje. Meshy nie zwraca kredytów za zadanie, które już się rozpoczęło, więc usunięcie go kosztowałoby Cię zarówno kredyty, jak i wynik. Poczekaj, aż osiągnie status SUCCEEDED, FAILED lub CANCELED, a następnie je usuń.

Usunięcie zadania w statusie końcowym (SUCCEEDED, FAILED lub CANCELED) nie powoduje zwrotu kredytów.

Zwraca

200 OK, gdy zadanie zostanie usunięte, lub 409 Conflict, gdy zadanie ma status IN_PROGRESS.


GET/openapi/v1/remesh

Pobierz listę zadań Remesh

Zwraca listę Twoich zadań 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
  }
]

Parametry

  • Name
    page_num
    Type
    integer
    domyślne 1
    Description

    Numer strony do zwrócenia, maksymalnie 255. Większa wartość zwróci 400.

  • Name
    page_size
    Type
    integer
    domyślne 10
    Description

    Liczba zadań na stronę, maksymalnie 100.

  • Name
    sort_by
    Type
    string
    Description

    Kolejność sortowania.

    Dostępne wartości:

    • +created_at: od najstarszych
    • -created_at: od najnowszych

Zwraca

Stronicowaną listę obiektów zadań Remesh.


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

Strumieniuj zadanie Remesh

Strumieniuje aktualizacje zadania Remesh jako Server-Sent Events (SSE).

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.
// These examples are shortened. Each event holds the full task object.
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,
}

Parametry

  • Name
    id
    Type
    path
    Description

    Identyfikator zadania z odpowiedzi tworzącej zadanie.

Zwraca

Strumień obiektów zadania Remesh jako Server-Sent Events.

Każde zdarzenie zawiera pełny obiekt zadania, w tej samej formie, jaką zwraca punkt końcowy Get. Gdy zadanie ma status PENDING lub IN_PROGRESS, jego pola wynikowe nie mają jeszcze wartości.


Obiekt zadania Remesh

Obiekt zadania Remesh opisuje jeden remesh modelu 3D. Przechowuje status, progress oraz pliki modelu, gdy zadanie zakończy się powodzeniem.

Właściwości

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
}
  • Name
    id
    Type
    string
    Description

    ID zadania. Traktuj go jako nieprzezroczysty ciąg znaków i nie polegaj na jego formacie.

  • Name
    type
    Type
    string
    Description

    Typ zadania, zawsze remesh.

  • Name
    model_urls
    Type
    object
    Description

    Adresy URL do pobrania remeshowanego modelu, po jednym dla każdego formatu pliku. Format, którego zadanie nie wygenerowało, nie ma klucza, zamiast pustego ciągu znaków.

    • Name
      glb
      Type
      string
      Description

      Plik GLB.

    • Name
      fbx
      Type
      string
      Description

      Plik FBX.

    • Name
      obj
      Type
      string
      Description

      Plik OBJ.

    • Name
      usdz
      Type
      string
      Description

      Plik USDZ.

    • Name
      blend
      Type
      string
      Description

      Plik Blender.

    • Name
      stl
      Type
      string
      Description

      Plik STL.

    • Name
      3mf
      Type
      string
      Description

      Plik 3MF. Obecny tylko wtedy, gdy target_formats zawiera 3mf.

  • Name
    thumbnail_url
    Type
    string
    Description

    Adres URL do pobrania podglądu remeshowanego modelu.

  • 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 Meshy wyrenderował przezroczysty podgląd.

  • Name
    progress
    Type
    integer
    Description

    Jaka część zadania została ukończona, w procentach. Wynosi 0 do momentu rozpoczęcia zadania i 100, gdy zakończy się powodzeniem.

  • Name
    status
    Type
    string
    Description

    Status zadania, jeden z: PENDING, IN_PROGRESS, SUCCEEDED, FAILED lub CANCELED.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Liczba zadań poprzedzających to zadanie w kolejce. Wartość ma znaczenie tylko wtedy, gdy zadanie ma status PENDING.

  • Name
    created_at
    Type
    timestamp
    Description

    Czas utworzenia zadania, w milisekundach Unix.

  • Name
    started_at
    Type
    timestamp
    Description

    Czas rozpoczęcia zadania, w milisekundach Unix. Wynosi 0 do momentu rozpoczęcia zadania.

  • Name
    finished_at
    Type
    timestamp
    Description

    Czas zakończenia zadania, w milisekundach Unix. Wynosi 0 do momentu zakończenia zadania.

  • Name
    expires_at
    Type
    timestamp
    Description

    Czas wygaśnięcia adresów URL do pobrania zadania, w milisekundach Unix. Wynosi 0 do momentu zakończenia zadania.

  • Name
    texture_urls
    Type
    array
    Description

    Adresy URL do pobrania map tekstur modelu, gdy zadanie zakończy się powodzeniem: tablica obiektów, po jednym dla każdego zestawu tekstur. Każdy obiekt zawiera adres URL base_color, a także może zawierać adresy URL metallic, roughness, normal, emission i metallic_roughness. Wynosi null do momentu zakończenia zadania powodzeniem i jest pustą tablicą, gdy model nie ma map tekstur.

  • Name
    task_error
    Type
    object
    Description

    Szczegóły błędu, gdy zadanie zakończy się niepowodzeniem. Zobacz Błędy.

  • Name
    consumed_credits
    Type
    integer
    Description

    Liczba kredytów zużytych przez zadanie. Obecna, gdy status to PENDING, IN_PROGRESS lub SUCCEEDED. Wynosi 0 dla zadania FAILED, ponieważ Meshy zwraca kredyty, gdy zadanie zakończy się niepowodzeniem.