API Bluesky Post dell'utente

POST

Stato di salute dell'API

Operatività nelle ultime 24 ore
Normale
  • Buono / normale
  • Disponibile
  • Limitato
  • Quasi del tutto inattivo
Normale

Ultime 24 ore

Ultimi 30 giorni

Monitora i post di un account Bluesky. Ogni post include testo e URL, numero di like, repost, citazioni, risposte e segnalibri, oltre a hashtag, menzioni e link esterni. quote_count conta i repost con commento aggiunto, separati dai repost semplici. Il batch non è un archivio completo.

Invia POST https://api.everyinfra.com/api/v1/social con platform impostato su bluesky e action impostato su user_posts. Prezzo $1.39 per 1.000 richieste ($0.001389 per chiamata). Le chiamate non riuscite e i risultati vuoti non vengono addebitati. Sincrona. Per i job più lenti, aggiungi "mode": "async" al corpo della richiesta, recupera il job_id ed esegui il polling.

Bluesky Posts by user raccoglie i post pubblici di un singolo account Bluesky, individuato dal suo handle completo in username. Ogni riga contiene il testo completo, il link al post, il numero di like, repost, citazioni, commenti e segnalibri, la data di pubblicazione, i flag che indicano risposte e repost, e gli hashtag, le menzioni e i link esterni presenti nel post. Giornalisti, ricercatori e team social la usano per seguire cosa pubblica un account e come reagiscono i lettori: monitorare persone e organizzazioni che pubblicano su Bluesky, studiare quali post si diffondono o creare un dataset per analisi linguistiche e di rete.

L'handle deve essere completo, come bsky.app o alice.bsky.social, non un nome visualizzato o un link al profilo. hashtags, mentions e links vengono omessi dalla riga quando il post non ne contiene, quindi tratta una chiave mancante come una lista vuota. mentions elenca, in ordine, gli handle che un post @-menziona, ed è quindi una fonte pronta per mappare con chi parla l'account.

Prompt per l'AI

#
Aiutami a scrivere uno script di raccolta dei dati con l'endpoint Bluesky Post dell'utente di EveryInfra (bluesky/user_posts).

Come funziona l'endpoint:
- Richiesta: POST https://api.everyinfra.com/api/v1/social con l'header Authorization: Bearer <chiave API>. Leggi la chiave dalla variabile d'ambiente EVERYINFRA_API_KEY e non scriverla mai direttamente nel codice.
- Nel corpo della richiesta imposta platform su bluesky e action su user_posts, e inserisci i parametri in params.
- Parametri obbligatori:
  - username: Specifica un handle Bluesky completo, ad esempio alice.bsky.social o un dominio personalizzato collegato. Non passare un nickname visualizzato né l'URL di una pagina bsky.app/profile/.
- Parametri facoltativi:
  - limit: Numero massimo di righe da restituire in questa chiamata: un intero da 1 a 200. Se lo ometti, viene applicato il valore predefinito; una chiamata può restituire meno righe. (predefinito: 20)
- Restituisce un elenco di record. Campi principali di ogni record: id, url, text, author_username, author_name, author_id, author_avatar_url, lang, like_count, repost_count, comment_count, quote_count; 22 campi in totale, elenco completo su https://api.everyinfra.com/api/v1/social/catalog?platform=bluesky.
- Esempio di corpo della richiesta:
{
  "platform": "bluesky",
  "action": "user_posts",
  "params": {
    "username": "bsky.app"
  }
}
- Prezzo: $1.39 per 1.000 richieste; le richieste non riuscite e i risultati vuoti non vengono addebitati.
- Per decine o centinaia di target, aggiungi "mode": "async" al corpo: ricevi subito un job_id ed esegui il polling su GET https://api.everyinfra.com/api/v1/jobs/{job_id} per ottenere il risultato.
- In caso di 422, correggi la richiesta usando i nomi dei parametri e i valori consentiti suggeriti nell'errore; in caso di 429 o 503, attendi il tempo indicato da Retry-After e riprova.

Prima di scrivere il codice, chiedimi quali target mi servono, quanti, quali campi e quale formato di output voglio; poi conferma con me il piano e il costo indicativo.

Parametri della richiesta

#
NomePosizioneTipoObbligatorioPredefinitoDescrizione
AuthorizationheaderstringSì-Bearer seguito dalla tua chiave API. Creala nella console; non inserirla mai in un URL o in un repository di codice.
platformbodystringSìblueskyIdentificativo della piattaforma, valore fisso.
actionbodystringSìuser_postsIdentificativo della funzionalità, valore fisso.
usernamebody.paramsstringSì-Specifica un handle Bluesky completo, ad esempio alice.bsky.social o un dominio personalizzato collegato. Non passare un nickname visualizzato né l'URL di una pagina bsky.app/profile/. Le azioni profile, user_posts, followers e following usano tutte questo parametro per individuare l'account.
limitbody.paramsinteger (1–200)No20Numero massimo di righe da restituire in questa chiamata: un intero da 1 a 200. Se lo ometti, viene applicato il valore predefinito; una chiamata può restituire meno righe. I valori più alti restituiscono 422 prima di qualsiasi addebito.

Esempi di codice

#
bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "bluesky",
  "action": "user_posts",
  "params": {
    "username": "bsky.app"
  }
}'

Definizione OpenAPI (JSON)Gli esempi leggono la chiave dalla variabile d'ambiente EVERYINFRA_API_KEY; il codice copiato non contiene mai la tua chiave.

Esempio di risposta

#
Acquisita il October 24, 2026 at 18:28 (UTC) chiamando questa API con i parametri dell'esempio di codice qui sopra. results e count sono la risposta reale di quella chiamata, da cui sono state rimosse le informazioni personali (nomi, handle, avatar, link ai profili, recapiti); l'elenco conserva i primi 2. id, billing e quota cambiano a ogni chiamata, quindi ne viene mostrata solo la struttura.
json
{  "id": "req_…",  "platform": "bluesky",  "action": "user_posts",  "results": [    {      "id": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3mykozpeyv22w",      "url": "https://bsky.app/profile/bsky.app/post/3mykozpeyv22w",      "text": "this was the exact use case we had in mind while we were building it",      "author_username": "bsky.app",      "author_name": "•••",      "author_id": "•••",      "author_avatar_url": "https://cdn.bsky.app/•••",      "lang": "en",      "like_count": 90,      "repost_count": 3,      "comment_count": 4,      "quote_count": 0,      "bookmark_count": 0,      "is_reply": true,      "is_repost": false,      "posted_at": "2026-10-23T17:24:06.492000+00:00",      "platform": "bluesky"    },    {      "id": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3myinmg7his27",      "url": "https://bsky.app/profile/bsky.app/post/3myinmg7his27",      "text": "please make sure to get the goat's permission",      "author_username": "bsky.app",      "author_name": "•••",      "author_id": "•••",      "author_avatar_url": "https://cdn.bsky.app/•••",      "lang": "en",      "like_count": 73,      "repost_count": 2,      "comment_count": 1,      "quote_count": 0,      "bookmark_count": 1,      "is_reply": true,      "is_repost": false,      "posted_at": "2026-10-22T21:53:27.448000+00:00",      "platform": "bluesky"    }  ],  "count": 20,  "billing": {    "charged": …,    "charged_usd": …,    "balance_after_usd": …,    …  },  "quota": { … }}

Campi della risposta

#

I dati di business si trovano in results. La tabella elenca i campi che un record può contenere; i valori che la piattaforma non mostra non vengono mai inventati.

CampoSignificato
idID univoco del record sulla piattaforma. È univoco solo all'interno di una piattaforma; gli ID possono ripetersi tra piattaforme diverse.
urlLink al record sulla piattaforma.
textTesto del contenuto senza HTML, restituito per intero e mai troncato (su alcune piattaforme i risultati degli elenchi contengono solo un estratto; lo indicano le note sui campi della piattaforma).
author_usernameUsername dell'autore (@handle), di solito utilizzabile negli URL.
author_nameNome visualizzato dell'autore.
author_idID univoco dell'autore sulla piattaforma.
author_avatar_urlMantiene il significato attribuito dalla piattaforma
langMantiene il significato attribuito dalla piattaforma
like_countLike. null significa che la piattaforma o questa funzionalità non li rende noti; non equivale a 0.
repost_countRepost (distinti dai post con citazione). null significa non resi noti.
comment_countCommenti. null significa non resi noti, non 0.
quote_countMantiene il significato attribuito dalla piattaforma
bookmark_countMantiene il significato attribuito dalla piattaforma
is_replyMantiene il significato attribuito dalla piattaforma
is_repostMantiene il significato attribuito dalla piattaforma
posted_atData e ora di pubblicazione in formato ISO 8601, UTC (ad esempio 2026-08-07T12:34:56+00:00). Le stringhe non standard della piattaforma vengono passate così come sono, quindi esegui il parsing in modo difensivo. null significa che la piattaforma non le rende note.
platformIdentificativo della piattaforma di origine, uguale a platform nella richiesta (ad esempio xiaohongshu, tiktok).
media_urlsMantiene il significato attribuito dalla piattaforma
embed_urlMantiene il significato attribuito dalla piattaforma
embed_titleMantiene il significato attribuito dalla piattaforma
hashtagsHashtag presenti nel testo, in ordine di apparizione; assente se non ce ne sono.
mentionsMantiene il significato attribuito dalla piattaforma
linksMantiene il significato attribuito dalla piattaforma

FAQ

#

Come tengo solo i post scritti dall'account?

#

Scarta le righe in cui is_repost è true, che sono repost di post di altri account, e scarta quelle in cui is_reply è true se vuoi i post principali senza risposte. Restano i post che l'account ha pubblicato per avviare un nuovo thread.

Che differenza c'è tra quote_count e repost_count?

#

Un repost condivide un post senza modificarlo, e repost_count conta i repost. Una citazione lo condivide aggiungendo un commento dell'account che cita, e quote_count conta le citazioni. Le citazioni riportano le reazioni con le parole di chi cita, quindi leggile a parte quando studi come è stato accolto un post.

lang viene rilevato dal testo?

#

No. lang è la lingua che l'autore ha scelto quando ha pubblicato, quindi è un'etichetta dell'autore e non un rilevamento, ed è accurata quanto quella scelta. Verifica un campione confrontandolo con text prima di filtrare in base a questo campo un dataset di grandi dimensioni.

Errori e addebiti

#
401
Chiave mancante o non valida.
402
Saldo insufficiente. Effettua prima una ricarica.
422
Nome o valore del parametro non valido. Correggilo seguendo i suggerimenti dell'errore. Nessun addebito.
429
Raggiunto il limite di richieste al minuto. Attendi il tempo indicato da Retry-After, poi riprova.
503
Impossibile completare. L'importo trattenuto torna sul tuo saldo. Se l'esito è incerto, verificalo prima di riprovare.
Risposta 200 vuota
Nessun dato. Nessun addebito.

Errori

Riferimenti ufficiali

#

Usati solo per verificare oggetti e terminologia. Non implicano alcuna autorizzazione o approvazione di EveryInfra da parte della piattaforma.

  • AT Protocol: handle e DID ↗

    Nel protocollo, l'handle è un identificatore utente in stile nome di dominio che si risolve in un DID stabile; i due non sono input intercambiabili.

    Verificato il 2026-09-04

Le nostre statistiche di visita interne sono sempre attive. Google Analytics viene caricato solo se scegli «Consenti analisi». Informativa sulla privacy