Skip to main content
POST
segment und region_edit verwenden beide den vorhandenen asynchronen Bild-Endpunkt. Speichern Sie die zurückgegebene task_id und fragen Sie anschließend den Aufgabenstatus ab; die Erstellungsanfrage liefert noch keine finalen Ebenen oder Bilder.
API-Keys dürfen niemals in Browser-Bundles, LocalStorage, URLs oder Frontend-Logs gelangen. Rufen Sie APIMart über Ihr Backend oder BFF auf.

Übersicht der Operationen

source_task_id und image_id sind nicht austauschbar. segment erwartet die Quell-Task-ID, region_edit die Bild-Asset-ID. Um ein bearbeitetes Bild erneut zu segmentieren, verwenden Sie die abgeschlossene region_edit-Task-ID als neue source_task_id.

Request-Header

Verwenden Sie Authorization: Bearer <APIMART_API_KEY>, Content-Type: application/json und Accept: application/json. Idempotency-Key ist optional und wird für kostenpflichtige region_edit-Anfragen dringend empfohlen. Er akzeptiert 1–191 sichtbare ASCII-Zeichen; empfohlen wird eine UUID. Verwenden Sie pro neuer logischer Operation einen neuen Key. Ein Netzwerk-Retry derselben Anfrage muss den ursprünglichen Key und identischen Body wiederverwenden. Wiederholen Sie eine kostenpflichtige Bearbeitung mit unklarem Ergebnis nicht automatisch mit einem neuen Key.

Asynchroner Aufgabenablauf

Eine erfolgreiche Erstellung liefert HTTP 200 und data[0].task_id. Fragen Sie GET /v1/tasks/{task_id}?language=de zunächst alle 2 Sekunden, später höchstens alle 5 Sekunden und maximal 10 Minuten lang ab. Stoppen Sie alte Abfragen beim Wechsel des Quellbilds.
Eine Aufgabenabfrage kann HTTP 200 liefern, obwohl data.status den Wert failed hat. Entscheiden Sie immer anhand von data.status und zeigen Sie gegebenenfalls data.error an.

segment

Anfrageparameter

segment benötigt keinen prompt. Senden Sie weder image_id, image_index, billing_model_name, n, size noch response_format. cache_only=true und refresh=true schließen sich aus.

Anfragebeispiele

Ein Cache-Miss ist weiterhin eine erfolgreiche Aufgabe. Verwenden Sie cache_status (hit oder miss) oder from_cache; leiten Sie keinen Treffer aus cached ab.

Abgeschlossene Antwort

Bei segment ist data.result direkt das Segmentierungsergebnis und nicht in images verpackt.
Ein Objekt ohne gültiges mask_rle oder mask_url kann nur näherungsweise per Box bearbeitet werden.

mask_rle dekodieren

mask_rle.counts ist eine COCO-komprimierte Zählzeichenfolge, weder Base64 noch zlib. Sie wird spaltenweise expandiert; der erste Lauf ist Hintergrund, danach wechseln Vorder- und Hintergrund. Das folgende TypeScript wandelt sie in eine browserfreundliche, zeilenweise Binärmaske um:
Dekodieren Sie große Masken in einem Web Worker. Vollständige mask_rle.counts dürfen nicht in Logs, Analysen, URLs oder Fehlerberichte gelangen.

Masken in präzise Auswahlbereiche umwandeln

Ermitteln Sie zusammenhängende Bereiche und Löcher, vereinfachen Sie die Konturen und normalisieren Sie jeden Punkt auf 0–1. Jeder Ring braucht mindestens 3 unterschiedliche Punkte, eine Fläche größer null und darf sich nicht selbst schneiden. Behalten Sie höchstens 16 größte Regionen pro Ebene und 400 Punkte pro Ring.
mask_size ist [height,width] und bezieht sich auf die Quellmaske, nicht auf CSS-Abmessungen. Bei object-fit: contain müssen Letterbox-Versatz und tatsächlicher Zeichenbereich berücksichtigt und Werte auf 0–1 begrenzt werden.
Das Lesen von Pixeln aus Quellbild oder mask_url erfordert CORS. Setzen Sie crossOrigin = "anonymous" vor src oder laden Sie einen Blob. Direktes Dekodieren von mask_rle vermeidet diese Abhängigkeit.

Bereich bearbeiten: region_edit

Anfrageparameter

Mindestens eines von selection_regions, boxes oder object_indices muss nicht leer sein. Die API akzeptiert Kombinationen, im Frontend sollte pro Anfrage nur eine Methode verwendet werden.
Senden Sie weder billing_model_name, size, aspect_ratio, source_aspect_ratio, source_size noch image_urls. n weglassen oder auf 1 setzen; claim_asset weglassen oder false; response_format weglassen oder url. Base64 und stream=true werden nicht unterstützt.

Auswahlmethoden

points kann flach oder als verschachtelte Paare angegeben werden. Jeder Wert muss endlich und zwischen 0–1 liegen; jeder Ring benötigt mindestens 3 Koordinatenpaare.

Abgeschlossene Antwort

Bevorzugen Sie result.images[0].items[0]. Bei älteren Antworten dürfen url[0] und image_ids[0] nur bei gleich langen Arrays gepaart werden. Fahren Sie erst fort, wenn sowohl eine HTTP(S)-URL als auch eine neue image_id vorhanden sind. Für den URL-Ablauf ist expires_at maßgeblich; keine feste Stundenzahl codieren. Langfristig benötigte Assets rechtzeitig herunterladen oder speichern.

Fortlaufende Bearbeitung

Nach Abschluss einer Bearbeitung aktualisieren Sie Anzeige-URL, aktuelle Asset-ID und Quell-Task-ID gemeinsam und löschen alte Ebenen sowie Abfragestatus.
  • Erneut segmentieren: diese region_edit-Task-ID als source_task_id verwenden
  • Erneut bearbeiten: die neu zurückgegebene image_id verwenden
  • Übergeben Sie niemals image_id an segment und bearbeiten Sie nicht weiter die vorherige Bild-ID.

Fehlerbehandlung

Abrechnung

  • segment ist kostenlos und endet mit cost=0 sowie credits_cost=0, erfordert aber Authentifizierung und eine gültige Quellaufgabe.
  • region_edit ist kostenpflichtig. Verwenden Sie cost und credits_cost der abgeschlossenen Aufgabe; Preise nicht im Frontend fest codieren.
  • Das interne Feld billing_model_name darf nie gesendet werden.

Frontend-Checkliste

  • API-Key nur im Backend oder BFF speichern.
  • An segment nur source_task_id senden, nie image_id oder image_index.
  • Für region_edit die image_id aus segment und mindestens eine Auswahlmethode verwenden.
  • Für präzise produktive Bearbeitung selection_regions verwenden; object_indices ist nur eine Box-Näherung.
  • mask_size stets als [height,width] lesen und Skalierung sowie Letterboxing berücksichtigen.
  • Bei demselben Netzwerk-Retry den ursprünglichen Idempotenz-Key wiederverwenden und Ausgabe-URL sowie neue image_id prüfen.