> ## Documentation Index
> Fetch the complete documentation index at: https://docs.emailx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestire template e importare profili LinkedIn

> Salva le impostazioni dei template email e accoda ricerche LinkedIn limitate, quindi verifica operazioni durevoli ed esiti delle righe.

Usa gli endpoint Emailx per leggere o salvare le impostazioni dei template email. Per una bozza LinkedIn manuale, puoi accodare una ricerca limitata a partire da URL di profili e leggere l’operazione durevole e gli esiti delle righe. Le modifiche ai template e le importazioni LinkedIn URL, da sole, non generano né approvano contenuti email, non attivano campagne e non inviano messaggi. L’importazione People CSV/XLSX è un flusso separato che salva i contatti senza iscriverli. Per il flusso distinto di attivazione LinkedIn con verifica, consulta [verifica e avvio di una campagna LinkedIn](https://docs.emailx.ai/it/overview/review-and-launch-linkedin.md).

> [!NOTE]
>
> 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](https://docs.emailx.ai/it/overview/people-import.md).

## Salvare le impostazioni di un template

I template appartengono a un workspace. Usa `templates: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:

```bash theme={null}
curl -X POST "$EMAILX_BASE_URL/api/v1/workspaces/123/templates" \
  -H "Authorization: Bearer $EMAILX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: crm-template-001" \
  --data '{"name":"Presentazione in italiano","subject":"Una breve presentazione","body":"<p>Buongiorno</p>","goal":"Sales"}'
```

Elenca i riepiloghi con [GET `/templates`](https://docs.emailx.ai/it/api-reference/templates/list-templates). Leggi tutti i campi salvati con [GET `/templates/{template_id}`](https://docs.emailx.ai/it/api-reference/templates/get-template). 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:

```bash theme={null}
curl -X PATCH "$EMAILX_BASE_URL/api/v1/workspaces/123/templates/601" \
  -H "Authorization: Bearer $EMAILX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: crm-template-002" \
  --data '{"expected_revision":"COPIA_LA_REVISIONE_CORRENTE","prompt":"Scrivi una presentazione concisa."}'
```

Con `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](https://docs.emailx.ai/it/api-reference/idempotency.md). 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. Ogni `linkedin_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.

```bash theme={null}
curl -X POST "$EMAILX_BASE_URL/api/v1/workspaces/123/campaigns/linkedin/456/imports" \
  -H "Authorization: Bearer $EMAILX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: crm-import-2026-11-001" \
  --data '{
    "expected_revision": "COPIA_LA_REVISIONE_CORRENTE_DELLA_CAMPAGNA",
    "sender_id": 903,
    "leads": [
      {
        "linkedin_url": "https://www.linkedin.com/in/example-person/",
        "first_name": "Alex",
        "company": "Example Studio"
      }
    ]
  }'
```

La richiesta restituisce `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.

> [!WARNING]
>
> L’importazione non attiva la campagna e non invia richieste di collegamento o messaggi. Controlla i prospect importati in Emailx prima di qualsiasi azione separata nell’app.

## Leggere stato e righe dell’operazione

Leggi l’operazione con [GET `/operations/{operation_id}`](https://docs.emailx.ai/it/api-reference/jobs/get-job). 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`.

```bash theme={null}
curl "$EMAILX_BASE_URL/api/v1/workspaces/123/operations/op_0123456789abcdef0123456789abcdef" \
  -H "Authorization: Bearer $EMAILX_API_KEY"
```

Segui `rows_path` e passa `next_cursor` senza modificarlo per leggere le pagine successive:

```bash theme={null}
curl "$EMAILX_BASE_URL/api/v1/workspaces/123/operations/op_0123456789abcdef0123456789abcdef/rows?limit=25" \
  -H "Authorization: Bearer $EMAILX_API_KEY"
```

Gli stati includono `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](https://docs.emailx.ai/it/api-reference/jobs/list-jobs.md). 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.

## Endpoint API correlati

* [Elencare i template email](https://docs.emailx.ai/it/api-reference/templates/list-templates.md)
* [Creare un template email](https://docs.emailx.ai/it/api-reference/templates/create-template.md)
* [Leggere un template email](https://docs.emailx.ai/it/api-reference/templates/get-template.md)
* [Aggiornare un template email](https://docs.emailx.ai/it/api-reference/templates/update-template.md)
* [Creare un’operazione di importazione LinkedIn](https://docs.emailx.ai/it/api-reference/prospects/import-linkedin-profiles.md)
* [Elencare le operazioni](https://docs.emailx.ai/it/api-reference/jobs/list-jobs.md)
* [Leggere avanzamento operazione](https://docs.emailx.ai/it/api-reference/jobs/get-job.md)
* [Annullare un’operazione](https://docs.emailx.ai/it/api-reference/jobs/cancel-job.md)
* [Leggere le righe importate](https://docs.emailx.ai/it/api-reference/prospects/list-linkedin-import-results.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.