Threads API-gids voor ontwikkelaars (2026)

Threads API-gids voor ontwikkelaars (2026)

Wat de Threads API publiceert, het Meta-app- en tokenmodel erachter, de tweestaps container-flow en de limiet van 250 posts per 24 uur.

Publiceren naar Threads vergt twee API-aanroepen, niet één: je maakt een mediacontainer aan, en publiceert die daarna. Profielen zijn beperkt tot 250 via de API gepubliceerde posts per 24 uur, tekstposts hebben een limiet van 500 tekens, en elke rechtenscope die je app gebruikt moet Meta’s App Review doorstaan voordat iemand buiten je testerslijst kan koppelen.

Wat kan de Threads API publiceren, en wat niet?

Losse posts ondersteunen drie mediatypes: TEXT, IMAGE en VIDEO. Carrousels ondersteunen IMAGE- en VIDEO-onderdelen, tussen 2 en 20 stuks, en een carrousel telt als één post voor je publishinglimiet.

De specificaties, uit Meta’s eigen documentatie:

BeperkingWaarde
Tekstlengte500 tekens
Carrousel-onderdelen2 tot 20
AfbeeldingsformatenJPEG, PNG
Bestandsgrootte afbeeldingmaximaal 8 MB
Breedte afbeelding320 tot 1440 pixels
Beeldverhouding afbeeldingmaximaal 10:1
VideocontainerMOV of MP4
VideocodecsH264- of HEVC-video, AAC-audio
Framerate video23 tot 60 FPS
Videoduur300 seconden (5 minuten)
Bestandsgrootte videomaximaal 1 GB
Bitrate video100 Mbps video, 128 kbps audio

Eén detail dat mensen verrast: emoji tellen mee voor de 500 tekens op basis van UTF-8-bytewaarde, niet als losse tekens. Een bijschrift dat er in je editor uitziet als 480 tekens, kan worden geweigerd. Tel je client-side, tel dan bytes voor emoji. Het artikel over de Threads-tekenlimiet en de gratis Threads-tekenteller houden hier beide rekening mee.

Let op: de cijfers hier zijn geverifieerd tegen developers.facebook.com/docs/threads/posts en /docs/threads/overview op datum september 2026. Platforms wijzigen dit zonder aankondiging.

Wat is het authenticatiemodel?

Threads draait op Meta’s app-infrastructuur maar met eigen credentials. Je maakt een Meta-app aan met de Threads use case, en die app geeft een Threads-specifieke app-ID en secret uit, anders dan die elders in het dashboard worden getoond. Het verkeerde paar gebruiken is een veelvoorkomende beginnersfout.

De scopes zijn granulair:

  • threads_basic (vereist door elk endpoint)
  • threads_content_publish (publiceren)
  • threads_manage_replies en threads_read_replies
  • threads_manage_insights
  • threads_delete
  • threads_location_tagging

App-review is niet optioneel. Elke rechtenscope moet worden goedgekeurd via App Review, en de app moet naar productie zijn gepubliceerd, voordat een niet-tester deze kan verlenen. Tot die tijd kun je alleen posten naar Threads-profielen die je expliciet als tester hebt uitgenodigd via het app-dashboard, en die de uitnodiging vanuit hun Threads-instellingen hebben geaccepteerd. Meta’s documentatie vermeldt niet hoe lang review duurt, dus we gaan daar niet naar gissen.

De tokenlevenscyclus die je moet bouwen

Dit is het onderdeel dat een achtergrondtaak wordt.

  1. Het autorisatievenster geeft een code terug.
  2. Wissel die in voor een kortlevend access token, geldig voor 1 uur.
  3. Wissel dat in voor een langlevend token via GET /access_token met grant_type=th_exchange_token. Geldig voor 60 dagen.
  4. Vernieuw via GET /refresh_access_token met grant_type=th_refresh_token. Een token moet minstens 24 uur oud en nog niet verlopen zijn om vernieuwbaar te zijn. Een vernieuwd token is nog 60 dagen geldig.

Een token dat 60 dagen niet wordt vernieuwd, verloopt en de gebruiker moet opnieuw autoriseren. Rechten die zijn verleend door app-gebruikers met privéprofielen zijn 90 dagen geldig.

Let op: de cijfers hier zijn geverifieerd tegen developers.facebook.com/docs/threads/get-started en /get-started/long-lived-tokens op datum september 2026. Platforms wijzigen dit zonder aankondiging.

Wat is de daadwerkelijke publishingvolgorde?

Voor een losse post:

  1. POST /{threads-user-id}/threads met media_type en je tekst of media-URL. Dit geeft een container-ID terug.
  2. Wachten. Meta raadt gemiddeld 30 seconden aan voordat je publiceert, zodat de server de verwerking van de media kan afronden.
  3. POST /{threads-user-id}/threads_publish met die container-ID.

Voor een carrousel voeg je een stap toe: maak een container per onderdeel, maak dan een carrouselcontainer die daarnaar verwijst, en publiceer die.

# 1. create the container
curl -X POST "https://graph.threads.net/v1.0/$USER_ID/threads" \
  -d "media_type=IMAGE" \
  -d "image_url=https://example.com/photo.jpg" \
  -d "text=Shipping notes for this week." \
  -d "access_token=$TOKEN"
# -> {"id":"1789..."}

# 2. wait ~30s for processing, then publish
curl -X POST "https://graph.threads.net/v1.0/$USER_ID/threads_publish" \
  -d "creation_id=1789..." \
  -d "access_token=$TOKEN"

Let op dat afbeeldingen en video’s worden doorgegeven via een publieke URL, niet geüpload als bytes. Meta’s servers halen ze op. Dat betekent dat je media publiek bereikbaar moet zijn, zonder authenticatie, en nog beschikbaar op het moment dat de aanroep plaatsvindt, wat een hostingvereiste is waar de meeste mensen niet op rekenen.

Wat zijn de rate limits?

ActieLimiet
Gepubliceerde posts250 per bewegende periode van 24 uur
Reacties1.000 per 24 uur
Verwijderingen100 per 24 uur
Locatiezoekopdrachten500 per 24 uur
Algemene API-aanroepen4800 x aantal weergaven, per 24 uur (minimaal 10 weergaven)

De formule voor weergaven is het dubbel lezen waard. Je budget voor algemene aanroepen schaalt met hoeveel bereik het profiel daadwerkelijk krijgt, met een minimum. Een gloednieuw profiel heeft het minimumbudget.

Let op: de cijfers hier zijn geverifieerd tegen developers.facebook.com/docs/threads/overview op datum september 2026. Platforms wijzigen dit zonder aankondiging.

Wat kost je daadwerkelijk drie weken?

App Review. Screencasts voorbereiden, een privacybeleid, een werkend demopad en een bedrijfsverificatie, en dan itereren op afwijzingen. De duur wordt niet gepubliceerd, dus plan het in als een planningsrisico, niet als een taak.

De tokenvernieuwingstaak. Langlevende tokens verlopen na 60 dagen en zijn alleen vernieuwbaar zodra ze 24 uur oud zijn. Dat is een geplande taak, een opslag van versleutelde tokens, een waarschuwingspad wanneer vernieuwing mislukt, en een herkoppel-flow in je UI.

Asynchroon falen. Dat de containeraanroep 200 teruggeeft, betekent niet dat je media geldig is. De publiceeraanroep is waar een slechte video naar boven komt, ongeveer 30 seconden later, in een ander verzoek. Je postmodel heeft een processing-status nodig en een manier om een fout te melden die binnenkwam nadat de gebruiker het tabblad had gesloten.

Publieke media-hosting. Omdat Meta ophaalt via URL, heb je duurzame publieke URL’s nodig met verstandig cachegedrag, en een plan voor wat er gebeurt als het ophalen wordt geraakt door rate limiting of geblokkeerd door de bot-bescherming van je CDN.

Byte-telling voor emoji. Goedkoop om op te lossen, duur om in productie te ontdekken.

De korte versie

  • Twee aanroepen om te publiceren: maak een container aan, wacht ongeveer 30 seconden, publiceer hem. Drie voor een carrousel.
  • Media wordt doorgegeven via publieke URL. Meta haalt het op.
  • 500 tekens. Emoji tellen als UTF-8-bytes.
  • 250 via de API gepubliceerde posts per profiel per 24 uur.
  • Kortlevende tokens duren 1 uur, langlevende 60 dagen, vernieuwbaar zodra ze 24 uur oud zijn.
  • App Review is vereist per rechtenscope voordat niet-testers kunnen koppelen. Er wordt geen duur gepubliceerd.

Threads plannen naast al het andere

Als Threads één platform is in een set in plaats van het hele product, herhaalt het meeste werk hierboven zich per netwerk in andere vorm. X gebruikt OAuth 2.0 PKCE en gesegmenteerde byte-uploads. Bluesky heeft helemaal geen app-review nodig. LinkedIn heeft twee aparte apps nodig: persoonlijke profielen gebruiken w_member_social, bedrijfspagina’s gebruiken r_organization_social, w_organization_social en rw_organization_admin, apart beoordeeld.

BulkPublish dekt 15 platforms achter één REST-API, inclusief Threads, waarbij de containervolgorde, de vernieuwing na 60 dagen en het asynchroon pollen van de status server-side worden afgehandeld. De ontwikkelaarsdocumentatie en de REST API-referentie noemen de endpoints, en Threads-posts plannen behandelt het pad zonder ontwikkelaar.

Gerelateerd