Pubblica o programma un video su Instagram, Facebook, TikTok e YouTube con una sola chiamata. Solo Pedra Pro, nessun credito addebitato.
Pubblica un video su Instagram, Facebook, TikTok e YouTube con una sola chiamata, subito o all'orario che scegli. Invia l'URL pubblico di un MP4 e una voce per ogni rete con la sua didascalia e le sue impostazioni. Pedra salva il video, lo pubblica su ogni rete e ti dà lo stato di ogni post.
Cosa ottieni con una sola chiamata:
Un video, quattro reti: Instagram (come Reel), una Pagina Facebook, TikTok e YouTube, ognuna con la sua didascalia e le sue impostazioni.
Pubblica subito o programma: se ometti scheduledAt il video esce in circa un minuto, altrimenti scegli un orario qualsiasi nei prossimi 180 giorni.
Uno stato per ogni post: elenca i tuoi post per vedere cosa è uscito, l'id del post sulla rete e perché qualcosa non è andato. Annulla un post programmato prima che esca.
Funziona dalla chat: gli stessi endpoint sono strumenti del server MCP remoto di Pedra, quindi ChatGPT e Claude possono programmare post da una conversazione.
Prima di iniziare
Solo Pedra Pro. Ogni chiamata verifica che l'account sia sul piano Pro. Gli altri account ricevono 403 pro_required. Un post programmato viene pubblicato solo se all'orario previsto l'account è ancora Pro; altrimenti il post fallisce con un errore.
Collega gli account nell'app. Gli account social si collegano in Pedra da Impostazioni › Social, dove accedi a ogni rete. L'API non può collegarli. Un account per rete per ogni utente Pedra.
Reti supportate: Instagram (un account professionale, pubblicato come Reel), una Pagina Facebook, TikTok e YouTube. Per ora solo video.
Nessun credito. Pubblicare è gratis. Il limite è di 25 post per rete nelle ultime 24 ore (429 daily_limit).
Come funziona
Tre chiamate coprono la maggior parte delle integrazioni:
Controlla: POST /api/social/accounts ti dice quali reti sono collegate.
Pubblica: POST /api/social/posts con l'URL del video e una voce per rete. Ricevi un post per ogni rete, con status: "pending".
Segui: POST /api/social/posts/list mostra lo stato di ogni post. Quando è "posted", platformPostId contiene l'id sulla rete.
L'esempio programma un video verticale su Instagram, TikTok e YouTube Shorts, domani alle 10:00 ora di Madrid.
# 1. Check which networks are connected
curl -X POST https://app.pedra.ai/api/social/accounts \
-H "Content-Type: application/json" \
-d '{ "apiKey": "YOUR_API_KEY" }'
# 2. Schedule the video for tomorrow at 10:00 Madrid time
curl -X POST https://app.pedra.ai/api/social/posts \
-H "Content-Type: application/json" \
-d '{
"apiKey": "YOUR_API_KEY",
"videoUrl": "https://example.com/videos/calle-mayor-12.mp4",
"scheduledAt": "2026-10-14T10:00:00+02:00",
"timezone": "Europe/Madrid",
"coverOffsetMs": 1000,
"posts": [
{ "network": "instagram", "caption": "3-bed flat with a sunny terrace on Calle Mayor 12. Book a visit, link in bio." },
{ "network": "tiktok", "caption": "3-bed flat with a sunny terrace on Calle Mayor 12. Book a visit, link in bio.", "privacyLevel": "PUBLIC_TO_EVERYONE" },
{ "network": "youtube", "title": "Calle Mayor 12: 3-bed flat with terrace", "caption": "3-bed flat with a sunny terrace on Calle Mayor 12. Book a visit, link in bio." }
]
}'
# 3. Later: check how it went
curl -X POST https://app.pedra.ai/api/social/posts/list \
-H "Content-Type: application/json" \
-d '{ "apiKey": "YOUR_API_KEY", "limit": 10 }'
Gli SDK Python e Node non hanno ancora metodi social, quindi gli esempi usano HTTP diretto.
Elencare gli account collegati
POST/api/social/accounts
Restituisce ogni rete supportata e se è collegata. account è il nome utente Instagram o TikTok, o il nome della Pagina Facebook. YouTube non condivide il nome del canale, quindi lì è sempre null.
Pubblica un video su una o più reti, subito o a scheduledAt. Pedra copia prima il video nel proprio spazio di archiviazione (max 1 GB), quindi il tuo URL deve funzionare solo durante questa chiamata. Un URL video di Pedra (img.pedra.ai) viene usato così com'è. Ogni rete può comparire una volta in posts e deve essere collegata, altrimenti ricevi 400 not_connected.
apiKeystringobbligatorio
La tua chiave API.
videoUrlstringobbligatorio
URL https pubblico di un MP4. Pedra lo copia nel proprio spazio di archiviazione (max 1 GB). Un URL video di Pedra (img.pedra.ai) viene usato così com'è.
scheduledAtstring
Quando pubblicare, come data e ora ISO 8601. Omettilo per pubblicare subito (esce in circa un minuto). Non può essere nel passato né oltre 180 giorni.
timezonestring
Fuso orario IANA, ad es. Europe/Madrid. Salvato solo per la visualizzazione; l'orario viene da scheduledAt.
coverOffsetMsinteger
Il fotogramma di copertina su Instagram e TikTok, in millisecondi dall'inizio del video (da 0 a 600000). Ignorato su Facebook e YouTube.
postsarrayobbligatorio
Una voce per rete, almeno una. Ogni rete al massimo una volta.
Voce di posts
Un oggetto per rete in posts. network e caption funzionano allo stesso modo ovunque; gli altri campi dipendono dalla rete e sono elencati sotto.
networkstringobbligatorio
La rete a cui si riferisce questa voce.
Values:instagramfacebooktiktokyoutube
captionstring
Testo del post. Su YouTube è la descrizione. Max 2.200 caratteri su Instagram e TikTok, 5.000 su YouTube.
Instagram
Pubblicato come Reel sull'account professionale collegato. Solo caption, max 2.200 caratteri.
Facebook
Pubblicato sulla Pagina Facebook collegata.
videoTypestring
Pubblicarlo come Reel o come normale video del feed.
Values:REELFEED
Default:REEL
firstCommentstring
Pubblicato come primo commento della Pagina, ad esempio un link. Max 8.000 caratteri.
TikTok
privacyLevel è obbligatorio e deve essere uno di quelli consentiti dall'account del creator. caption max 2.200 caratteri.
privacyLevelstringobbligatorio
Chi può vedere il video. Deve essere uno di quelli consentiti dall'account del creator.
Partnership retribuita. Non consentita con SELF_ONLY.
aiGeneratedboolean
L'etichetta di TikTok per i contenuti generati con IA. Impostala su false solo per riprese reali.
Default:true
YouTube
title è obbligatorio. caption diventa la descrizione del video, max 5.000 caratteri. YouTube mostra i video verticali brevi come Shorts.
titlestringobbligatorio
Titolo del video, max 100 caratteri. Titolo e didascalia non possono contenere < o >.
privacyStatusstring
Visibilità del video.
Values:publicunlistedprivate
Default:public
categoryIdstring
Numero di categoria YouTube, come stringa (ad es. "22").
curl -X POST https://app.pedra.ai/api/social/posts \
-H "Content-Type: application/json" \
-d '{
"apiKey": "YOUR_API_KEY",
"videoUrl": "https://example.com/videos/calle-mayor-12.mp4",
"scheduledAt": "2026-10-14T10:00:00+02:00",
"timezone": "Europe/Madrid",
"coverOffsetMs": 1000,
"posts": [
{
"network": "instagram",
"caption": "3-bed flat with a sunny terrace on Calle Mayor 12. Book a visit, link in bio."
},
{
"network": "tiktok",
"caption": "3-bed flat with a sunny terrace on Calle Mayor 12. Book a visit, link in bio.",
"privacyLevel": "PUBLIC_TO_EVERYONE",
"brandOrganicToggle": true
},
{
"network": "youtube",
"title": "Calle Mayor 12: 3-bed flat with terrace",
"caption": "3-bed flat with a sunny terrace on Calle Mayor 12. Book a visit, link in bio.",
"privacyStatus": "public",
"categoryId": "22"
}
]
}'
Restituisce i tuoi post, ordinati per scheduledAt dal più recente. Filtra per stato, rete e data per vedere cosa è uscito e perché qualcosa non è andato.
apiKeystringobbligatorio
La tua chiave API.
statusstring
Solo post con questo stato.
Values:pendingprocessingpostedfailedcancelled
networkstring
Solo post su questa rete.
Values:instagramfacebooktiktokyoutube
fromstring
Solo post con scheduledAt a partire da questo orario (ISO 8601).
tostring
Solo post con scheduledAt fino a questo orario (ISO 8601).
limitinteger
Quanti post restituire, da 1 a 100.
Default:50
Stati di un post
pending: in attesa del suo orario. Solo i post in attesa si possono annullare.
processing: in pubblicazione in questo momento.
posted: online sulla rete. postedAt e platformPostId sono valorizzati.
failed: non pubblicato. error spiega perché.
cancelled: annullato prima di uscire.
Oggetto post
Tutti gli endpoint che restituiscono post usano questa forma.
postIdstring
L'id Pedra del post.
networkstring
La rete.
Values:instagramfacebooktiktokyoutube
statusstring
Vedi Stati di un post, sopra.
Values:pendingprocessingpostedfailedcancelled
scheduledAtstring
Quando è prevista, in UTC.
postedAtstring | null
Quando è uscito, o null.
platformPostIdstring | null
L'id sulla rete una volta pubblicato (ad es. l'id del video YouTube). Per i post TikTok privati, il publish id.
videoIdstring
Il video salvato, condiviso da tutti i post della stessa chiamata.
errorstring | null
Perché è fallito, o null.
firstCommentErrorstring
Presente solo se il primo commento Facebook non è andato. Il post è comunque uscito.
Annulla un post non ancora uscito. Solo i post pending si possono annullare; gli altri restituiscono 409 not_cancellable. Il post di ogni rete è separato, quindi annullarne uno non tocca gli altri della stessa chiamata.
Gli errori arrivano come { "error": "...", "code": "..." }. Basa la logica su code; error è un messaggio leggibile. Vedi Errori e limiti per il modello generale.
400: invalid_video_url (non è un URL https pubblico), video_unreachable (Pedra non è riuscita a scaricarlo), not_a_video, video_too_large (oltre 1 GB), invalid_network, not_connected (collegala da Impostazioni › Social), invalid_post (il messaggio indica la rete e il campo), invalid_scheduled_at (non ISO 8601, nel passato o oltre 180 giorni), invalid_cover (coverOffsetMs non è un numero intero di millisecondi tra 0 e 600000).
401 invalid_api_key: la chiave API manca o è errata.
403 pro_required: l'account non è su Pedra Pro.
404 post_not_found: nessun post con quel postId su questo account.
409 not_cancellable: il post è già pubblicato, fallito, in elaborazione o annullato.
429 daily_limit: quella rete ha già 25 post nelle ultime 24 ore.
Successivo
Crea prima il video con l'API Video (il suo URL viene usato così com'è), o programma i post da ChatGPT o Claude con il server MCP.