Usa un host API compatibile con la versione 0.8.0, controlla le capacità del workspace e considera
503 feature_unavailable come funzione non abilitata. Questo endpoint per URL LinkedIn non accetta file; per i file contatto usa il flusso separato di importazione People CSV/XLSX.Salvare le impostazioni di un template
I template appartengono a un workspace. Usatemplates:read per elencarli o leggerli e templates:write per crearli o modificarli. L’API espone i campi salvati dei template normali e intelligenti. Non esegue prompt, non genera contenuti personalizzati, non approva contenuti e non collega template a campagne.
Crea un template con i campi necessari:
/templates. Leggi tutti i campi salvati con GET /templates/{template_id}. La risposta include una revision opaca che protegge le modifiche da sovrascritture di dati più recenti.
Per modificare, copia la revision da una GET aggiornata in expected_revision e invia solo i campi da cambiare:
409 stale_revision, rileggi il template e riconcilia la modifica prima di inviare un nuovo aggiornamento logico. In caso di timeout o risposta incerta, segui idempotenza e recupero. Un prompt o corpo salvato non equivale a testo generato o approvato.
Accodare un’importazione LinkedIn limitata
L’endpoint accetta da 1 a 100 profili per richiesta. Ognilinkedin_url deve essere un URL HTTPS linkedin.com/in/.... I campi facoltativi first_name, last_name e company aggiungono informazioni alla riga. L’endpoint non supporta file, importazioni CSV, ricerca provider o targeting della campagna.
Prima dell’invio, leggi la configurazione della campagna e usa la revision più recente come expected_revision. Per leggere la configurazione serve campaigns:read; per inviare l’importazione serve campaigns:import. La campagna deve essere una bozza LinkedIn inattiva, manuale, con autopilot disabilitato e senza cronologia di esecuzione; inoltre il mittente deve essere già selezionato nella configurazione. Il mittente deve essere attivo, autorizzato per l’attore corrente e incluso nel piano del workspace. Per l’accesso agenzia servono anche agency:read e appartenenza attuale al workspace.
202 con un ID operazione opaco. Accoda il lavoro, senza risolvere i profili durante la richiesta. Le ricerche provider possono consumare la quota LinkedIn del workspace. Mantieni ogni richiesta entro il limite di 100 profili e considera la quota prima di inviarla.
Il limite HTTP del corpo della richiesta è 256 KiB, ma il comando durevole serializzato è limitato a 64 KiB. Mantieni concisi i campi dei profili e dividi liste più grandi in importazioni separate con chiavi intenzionali; ogni richiesta accetta comunque al massimo 100 profili. Non dividere né inviare di nuovo un’importazione con esito sconosciuto.
Leggere stato e righe dell’operazione
Leggi l’operazione con GET/operations/{operation_id}. La risposta mostra lo stato e i conteggi aggregati in result.counts; result.rows_path indica l’endpoint paginato delle righe. Per leggere operazioni e righe servono operations:read e campaigns:read.
rows_path e passa next_cursor senza modificarlo per leggere le pagine successive:
queued, running, awaiting_user_action, succeeded, partially_succeeded, failed, needs_reconciliation e cancelled. Uno stato needs_reconciliation o una risposta incerta richiede una verifica. Leggi l’operazione e le sue righe. Se la risposta POST è andata persa e non hai l’ID operazione, controlla l’elenco delle operazioni del workspace. Non inviare automaticamente una seconda importazione e non creare una nuova chiave di idempotenza per forzare un altro tentativo.
Puoi annullare l’operazione solo mentre è queued o awaiting_user_action e prima dell’avvio di un effetto esterno. L’annullamento richiede operations:write, campaigns:read e il grant campaigns:import originale. Se restituisce 409 operation_not_cancellable, leggi operazione ed esiti delle righe invece di ripetere l’importazione.

