Vai al contenuto principale

Guida alla migrazione

Migra un flusso di lavoro, non un catalogo intero.

Due piattaforme possono offrire la stessa attività e comunque non essere d’accordo su nomi dei campi, valori predefiniti, stati finali, significato degli errori e cosa sia un’unità di fatturazione. Una migrazione che parte dalla base URL scopre tutto questo in produzione.

La sfida

Stessa attività, contratto diverso

Il modello è la parte che si porta dietro senza problemi. Quello che non si porta dietro è tutto il resto: quali campi sono obbligatori, quali sono i valori predefiniti, come entra un’immagine di riferimento, quando viene bloccato il denaro e cosa deve fare il tuo codice davanti a uno stato che non ha mai visto.

01

Nomi dei campi e valori predefiniti quasi mai coincidono

Scrivi la mappatura endpoint per endpoint invece di dedurla. L’input è validato sullo schema pubblicato con additionalProperties chiuso, quindi un campo non mappato è un 400 alla prima richiesta vera e non un avviso in un log.

02

Il denaro viene bloccato in ammissione, non al completamento

createTask blocca la stima e la restituisce come cost con settled: false. Se la tua piattaforma attuale addebita solo in caso di successo, la riconciliazione deve capire i blocchi prima che tu sposti traffico.

03

Il vocabolario degli errori è chiuso e piccolo

Nove valori coprono ogni fallimento, e content_rejected è uno di questi: un rifiuto è un’attività terminata, non un’eccezione. Mappa i tuoi rami di errore su quei nove prima del passaggio, non dopo.

L’approccio

Metti in ombra un endpoint, confronta i numeri, poi sposta

Prendi un solo flusso di lavoro, registra i suoi input, output, fallimenti e costo unitario attuali, e ripeti le stesse condizioni qui. Confronta la stima di jobs/quote con quello che paghi oggi, tieni vive entrambe le strade dietro un flag e alza la quota solo finché i numeri tengono.

Prima il preventivo: esegue le stesse validazioni e gli stessi controlli di ammissione della creazione, senza bloccare fondi né avviare lavoro.

POST /api/v1/jobs/quote

{
  "model": "<publisher>/<model>/text-to-video",
  "input": {
    "prompt": "A slow aerial drift over a misty pine forest at sunrise",
    "duration_seconds": 5,
    "resolution": "1080p"
  }
}

200 OK — nothing reserved, nothing started

{
  "code": 200,
  "msg": "success",
  "request_id": "req_example_quote",
  "data": {
    "quoteId": "qte_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "model": "<publisher>/<model>/text-to-video",
    "estimatedCost": "0.750000",
    "maxCharge": "0.750000",
    "currency": "USD",
    "quantity": "5",
    "unit": "second",
    "expiresAt": "2026-09-12T12:05:00Z"
  }
}

Contratto

Cosa conviene fissare fin dall’inizio

Alternativa a fal: migra immagini e video — Cosa conviene fissare fin dall’inizio
Campo o headerValore o limite
POST /api/v1/jobs/quoteno hold · signed quote valid 5 min
quoteId + expectedCost40901 when the price moved
40240201 balance · 40202 spend cap
published call nameimmutable · renames keep a 308

Scorri in orizzontale per vedere tutte le colonne.

Integrazione

Dalla prima chiamata alla produzione

  1. 01Scegli un endpoint e raccogli dieci richieste rappresentative, i loro output e il loro costo attuale.
  2. 02Mappa ogni campo sull’input_schema dell’endpoint di destinazione e conserva la mappatura con una versione.
  3. 03Chiedi il preventivo di ogni corpo mappato e confronta estimatedCost, quantity e unit con la fattura di oggi.
  4. 04Prima in ombra, poi in canary, poi alza la quota, con la vecchia strada richiamabile a ogni passo.

Scelta

Quando questa strada è quella giusta

Scegli questa via se

  • Vuoi un solo saldo, un solo insieme di limiti di spesa e un solo contratto di attività su immagine, video e testo.
  • Il tuo collo di bottiglia sono le regole sui contenuti o la disponibilità modello per modello, non la qualità del modello.

Cerca altrove se

  • Ti serve un passaggio in giornata per tutto. Le differenze di contratto emergono endpoint per endpoint, ed emergono tardi.
  • La tua integrazione chiama il modello dal client. Qui le chiavi stanno sul server.

Verifiche

Cosa puoi verificare in autonomia

Il preventivo è una prova a secco vera

POST /api/v1/jobs/quote esegue le stesse validazioni e gli stessi controlli di ammissione della creazione, restituisce estimatedCost, maxCharge, quantity e unit e non blocca nulla. Il preventivo firmato resta valido cinque minuti.

Un prezzo che si muove fallisce invece di sorprenderti

Manda quoteId ed expectedCost con la creazione. Se il prezzo è cambiato nel frattempo, l’ammissione restituisce il codice applicativo 40901 prima che venga bloccato qualcosa.

I nomi pubblici delle chiamate non si spostano

Un nome di chiamata pubblicato resta valido; una rinomina mantiene un 308 e un alias. La tua tabella di mappatura non marcisce in silenzio fra una release e l’altra.

Prima del lancio

Comportamenti della piattaforma da confermare

  • Versiona la mappa dei campi e tieni fixture per un successo e un fallimento per endpoint.
  • Verifica che ogni endpoint di destinazione sia richiamabile e prezzato prima di indirizzare una sola richiesta.
  • Prova il rollback con il traffico sopra, non su un ramo di staging.
  • Riconcilia blocchi e addebiti per un intero ciclo di fatturazione prima di spostare l’ultima quota.

Domande frequenti

Cosa ci chiedono su questa pagina

Non per i media. Contratto delle attività, nomi dei campi, macchina a stati e semantica di fatturazione vanno tutti mappati. I client di testo ci vanno più vicino: alla superficie compatibile con OpenAI di solito bastano una base URL e un valore di model.

Continua

Mappa un flusso di lavoro e chiedine il preventivo

Sposta un flusso alla volta: mappa i campi, normalizza stati ed errori, confronta la fattura e sposta il traffico con un rollback già provato.

Fonte: fal model APIs ↗

Guide correlate