Entwickeln · Mobile Try-On

Virtuelles Try-On zu einer iOS- oder Android-App hinzufügen

In aller Kürze

Behalten Sie den Photta-API-Key auf Ihrem Backend; stellen Sie einen Proxy-Endpoint (/mobile/try-on) bereit, der das Produktbild und die Mannequin-ID entgegennimmt, an /api/v1/tryon/apparel weiterleitet, die Generierungs-ID dem Nutzer zugeordnet speichert und einen Status-Endpoint bereitstellt, den die mobile App alle 3 Sekunden abfragt, bis das Bild fertig ist. Das Smartphone erfährt nie von der Existenz des Photta-Keys.

  • Credits: 5 Credits bei 2K · 6 Credits bei 4K
  • Typische Dauer: 1.5–4 min
  • Verarbeitung: asynchron, Polling

Jeder Zahlenwert auf dieser Seite stammt aus der Photta-API-Dokumentation · geprüft

Ihr Endgerät kommuniziert nie direkt mit Photta — es spricht mit Ihrem Backend, und Ihr Backend spricht mit Photta. Genau diese Grenze verhindert, dass Ihr API-Key auf dem Smartphone des Nutzers landet, sorgt dafür, dass Ihre Rate-Limits Ihre eigene Angelegenheit bleiben, und macht Ihre App in jedem Store zulassungsfähig.

RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/tryon/apparel \
  -H "Authorization: Bearer $PHOTTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "product_type": "top",
  "product_images": [
    "https://cdn.yourstore.com/products/shirt-front.jpg"
  ],
  "product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
  "product_category": "t_shirt",
  "mannequin_id": "mnk_f3a9b1",
  "pose_id": "pose_c2d4e5",
  "background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
  "lock_background": true,
  "resolution": "2K",
  "aspect_ratio": "3:4",
  "body_size": "M",
  "expression": "neutral",
  "user_instruction": "Keep the collar pattern crisp and centered."
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')

Funktionsweise

Endgerät, Backend, Photta — drei Schichten, ein Workflow

Fünf konkrete Entscheidungen, die Sie vor dem ersten Einreichen im App Store treffen müssen.

  1. Schritt 1

    Behalten Sie den Key auf Ihrem Server

    Liefern Sie den Photta-Key nicht innerhalb Ihres App-Binarys, der info.plist, des AndroidManifests oder einer Build-Time-Env-Datei aus — das Dekompilieren des Binarys ist trivial und der Key wird geleakt. Ihr Backend ist der einzige Ort, an dem der Key existiert.

  2. Schritt 2

    Entwerfen Sie einen sauberen Proxy-Endpoint

    Stellen Sie Ihrer App /mobile/try-on bereit. Authentifizieren Sie die Anfrage über Ihre eigene Nutzersitzung — übergeben Sie keine API-Keys im Klartext über den Proxy. Der Proxy ruft Photta anschließend im Namen des authentifizierten Nutzers auf.

  3. Schritt 3

    Spiegeln Sie Phottas Job-Status in Ihrer Datenbank

    Wenn Photta eine Generierungs-ID zurückgibt, fügen Sie eine Zeile in Ihre eigene Jobs-Tabelle ein, indiziert nach user_id. Ihre mobile App pollt IHREN /mobile/try-on/:id — nicht den von Photta —, sodass Rate-Limits mit IHREM Plan skalieren und nicht mit dem Endgerät jedes Nutzers.

  4. Schritt 4

    Cachen Sie die Ergebnis-URL

    Wenn Photta completed meldet, kopieren Sie die output_url in Ihre Jobs-Zeile und laden Sie die Bytes optional in Ihr eigenes CDN herunter. Mobilfunknutzer zahlen pro MB — verlinken Sie das Photta-CDN nicht für die gesamte Lebensdauer eines PDP-Aufrufs direkt.

  5. Schritt 5

    Offline-Zustände sauber abfangen

    Mobilfunknetze brechen mitten im Polling ab. Zeigen Sie lieber einen „Erneuter Versuch“-Status als einen harten Fehler an, versuchen Sie es mit exponentiellem Backoff erneut und persistieren Sie die Job-ID lokal, damit ein Kaltstart genau dort weitermacht, wo die letzte Sitzung abgebrochen ist.

Drei Schichten der Integration

App-Vertrag, Backend-Proxy, clientseitiges Polling — genau die Abgrenzung, die Sie brauchen.

// Never ship your PHOTTA_API_KEY to the device. The mobile app
// calls YOUR API; your API calls Photta. Simple, safe, billable.
POST /mobile/try-on
{
  "productImageUrl": "...",
  "mannequinId": "...",
  "poseId": "..."
}
// → returns { jobId } immediately
const res = await fetch("https://api.photta.app/api/v1/tryon/apparel", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    "product_type": "top",
    "product_images": [
      "https://cdn.yourstore.com/products/shirt-front.jpg"
    ],
    "product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
    "product_category": "t_shirt",
    "mannequin_id": "mnk_f3a9b1",
    "pose_id": "pose_c2d4e5",
    "background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
    "lock_background": true,
    "resolution": "2K",
    "aspect_ratio": "3:4",
    "body_size": "M",
    "expression": "neutral",
    "user_instruction": "Keep the collar pattern crisp and centered."
  }),
});
const { data } = await res.json(); // data.id, data.status
// Store { id: data.id, user_id, status: "processing" } in your jobs table
// and return { jobId: data.id } to the device.
// App polls YOUR /mobile/try-on/:id — you poll Photta server-side
// and mirror status. This way rate limits are YOUR problem, not
// each device's, and you can add caching + analytics in one place.
async function pollJob(jobId: string) {
  while (true) {
    const { status, imageUrl } = await api.get(`/mobile/try-on/${jobId}`);
    if (status === "completed") return imageUrl;
    if (status === "failed") throw new Error("Try-on failed");
    await sleep(3000);
  }
}

Häufige Fragen von Entwicklern

Ein Photta-gestütztes mobiles Feature deployen

Kann ich die Photta-API direkt vom Endgerät aus aufrufen?

Technisch gesehen ja — aber Sie müssten Ihren API-Key innerhalb des App-Bundles ausliefern, wodurch Ihr Key auf jedem Gerät landet, das die App installiert. Routen Sie stattdessen über Ihr eigenes Backend, damit der Key auf einem Server verbleibt, den Sie kontrollieren.

Wie gehe ich mit langsamen Mobilfunknetzen um?

Zwei Dinge. Erstens: Übermitteln Sie den Job vom Backend aus, nicht vom Gerät — Sie laden lediglich ein Produktbild vom Smartphone auf Ihre eigene API hoch. Zweitens: Pollen Sie Ihren eigenen Status-Endpoint in 3-Sekunden-Intervallen mit exponentiellem Backoff bei Fehlern. Wenn der Nutzer den Tab wechselt oder das Signal verliert, persistieren Sie die Job-ID im lokalen Speicher, damit nach der Rückkehr nahtlos fortgesetzt werden kann.

Unterstützt Photta Webhooks?

Nein. Polling ist das einzige Fertigstellungssignal, das die API bereitstellt. Behalten Sie daher den Worker-Loop bei — und senden Sie ein Server-Sent Event an das Smartphone, sobald Ihr eigenes Backend den Abschluss des Jobs erkennt.

Kann ich Photta mit React Native oder Flutter verwenden?

Ja — auf Seiten von JavaScript / Dart rufen Sie lediglich Ihre eigene Backend-API auf. Keine der Photta-Spezifika dringt nach außen. Flutter-Apps fetchen /mobile/try-on genauso wie eine React Native- oder native SwiftUI- / Jetpack Compose-App.

Interessiert sich das Review-Team von Apple für diese Integration?

Nein — da Ihre App Photta nicht aufruft. Sie ruft Ihr eigenes Backend mit Ihrer eigenen Authentifizierung auf. Aus Apples Sicht handelt es sich um eine gewöhnliche App mit REST-Backend. Dasselbe gilt für Google Play und die Huawei AppGallery.

Virtuelles Try-On im nächsten App-Release ausliefern

Drei schlanke Schichten, kein SDK-Footprint auf dem Endgerät. Holen Sie sich einen API-Key und richten Sie den Proxy an einem Nachmittag ein.