# Post utente Felo X

POST /api/v1/data/x/user/tweets

Scegli l'operazione per i dati di cui hai bisogno. Tutti e cinque gli endpoint usano POST e restituiscono JSON alla radice, senza un wrapper comune `data`.

Tutti gli esempi usano `FELO_API_KEY` dalla [panoramica](https://openapi.felo.ai/it/docs/data-api/guides/felo-overview.md). Le chiamate usano **il saldo della piattaforma**, non i crediti Felo Pro. Gli esempi di risposta sono illustrativi; il contenuto live e i campi opzionali variano.





## 3. Ottieni la timeline di un utente

`POST /api/v1/data/x/user/tweets`

| Campo | Tipo | Obbligatorio | Significato |
|---|---|---|---|
| `username` | string | È richiesto un identificatore | Handle utente, fino a 100 caratteri |
| `x_user_id` | string | È richiesto un identificatore | ID utente, fino a 100 caratteri; ha la precedenza su `username` |
| `limit` | integer | No | 1–1.000; l'implementazione attuale usa almeno 20, con predefinito 20 |
| `cursor` | string | No | Cursor di paginazione, fino a 4.000 caratteri |
| `include_replies` | boolean | No | Includi risposte annidate; predefinito `false` |

```bash
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/user/tweets" \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"OpenAI","limit":20,"include_replies":false}'
```

La risposta contiene `tweets`, `total`, `has_next` e `next_cursor`. Impostare `limit` sotto 20 non garantisce meno elementi restituiti o un addebito minore. Includere le risposte può aggiungere dati restituiti e risultati fatturabili.

### Limiti dei risultati e delle risposte annidate

`limit` è il numero obiettivo di post di primo livello per questa richiesta, non un conteggio garantito dei risultati. L'implementazione attuale usa un obiettivo di almeno 20: un obiettivo di 20 legge una pagina upstream; obiettivi più grandi recuperano automaticamente fino a 50 pagine. Prima di ogni pagina, controlla il tempo trascorso e interrompe il recupero di altre pagine una volta superati i 60 secondi. Questo controllo non garantisce che l'intera richiesta HTTP termini entro 60 secondi.

La raccolta si interrompe anche quando l'obiettivo viene raggiunto, l'upstream non ha una pagina successiva, una pagina è vuota o il cursor manca. Una risposta riuscita può quindi contenere meno di `limit` post. Usa `has_next` e `next_cursor` per continuare quando disponibili.

Con `include_replies=true`, ogni post restituito ottiene fino a 5 pagine extra e al massimo 100 risposte annidate. La raccolta può interrompersi prima quando non c'è una pagina successiva, una pagina è vuota o il cursor non può avanzare. Queste risposte annidate sono esterne al `limit` e al `total` di primo livello, ma possono aggiungere risultati fatturabili.

Le `replies` annidate non sono un archivio completo delle risposte e non espongono un cursor di continuazione separato per questa raccolta aggiuntiva. Per paginare le risposte in modo indipendente, usa l'operazione Read replies e il cursor che restituisce. Non riutilizzare il cursor del post di primo livello per le risposte.



## Paginazione e controllo dei costi

`total` conta l'array corrispondente nella risposta corrente: post di primo livello per le query sui post, o risposte all'interno di ciascuna voce risultato per le query sulle risposte. Non è un conteggio globale delle corrispondenze, né il conteggio completo delle risposte di un post, né il conteggio finale fatturabile.

1. Invia la prima richiesta senza `cursor`.
2. Leggi `has_next` e `next_cursor` dalla risposta. Per le risposte, leggili in ogni voce risultato.
3. Se esiste un'altra pagina e il cursor non è vuoto, invialo invariato con la stessa query. Per un batch di risposte, continua separatamente per ogni post.
4. Fermati quando non c'è più una pagina successiva, quando un cursor si ripete o quando raggiungi il tuo limite di pagine o di spesa.

I metadati di paginazione riflettono l'ultima risposta upstream; la raccolta restituita può essere troncata da un limite di risultati. Anche `has_next=false` non garantisce che tutta la cronologia X o tutte le risposte siano state recuperate. Mostra il conteggio effettivo restituito invece di etichettare un insieme di risultati limitato come tutti i dati disponibili.

Ogni pagina riuscita può comportare un addebito. Queste cinque operazioni sono fatturate in base ai risultati restituiti, non con una tariffa fissa per richiesta. Le risposte annidate e altri record restituiti possono influire sul conteggio fatturato; non stimare il costo solo dalla lunghezza dell'array di primo livello. Controlla i [prezzi attuali](https://openapi.felo.ai/api/v1/data/prices) e l'utilizzo nella console. I campi completi degli oggetti sono nello [schema OpenAPI](https://openapi.felo.ai/api/v1/data/openapi.json).
