Endpoints
Een reactie publiceren
Plaatst een reactie op Reddit vanaf een account uit het SubReply-bestand, achter een residentiële proxy.
/api/v1/publish50 creditsDeze route publiceert echt op Reddit
r/testingground4bots, controleer de permalink die je terugkrijgt en koppel de route pas daarna aan je productieomgeving.Parameters
Body van de aanvraag (application/json)
| Parameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
post_url | string | Verplicht | Volledige URL van de Reddit-post waaronder je wilt reageren. Moet beginnen met https://www.reddit.com/ of https://reddit.com/. |
comment | string | Verplicht | Tekst van de reactie, van 10 tot 2.000 tekens. Onder de 10 is het geen reactie — en een «ok» schaadt de geloofwaardigheid van het account dat hem plaatst. |
Voorbeeld
curl -s -X POST https://subreply.io/api/v1/publish \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sr_live_VOTRE_CLE_API" \
-d '{
"post_url": "https://www.reddit.com/r/startupfrance/comments/1abc23/...",
"comment": "J'\''ai monté mon cabinet il y a deux ans avec exactement le même problème..."
}'{
"status": "posted",
"reddit_comment_url": "https://www.reddit.com/r/startupfrance/comments/1abc23/_/xyz789",
"account_used": "subreply_community",
"credits_used": 50,
"credits_remaining": 450
}{
"status": "queued",
"reddit_comment_url": null,
"account_used": "subreply_community",
"credits_used": 0,
"credits_remaining": 500
}202: niet opnieuw proberen
202 betekent dat de aanvraag de deur uit is, maar dat de publicatie niet bevestigd is. Er wordt niets afgeschreven — en vooral: speel de aanroep niet opnieuw af, want de reactie staat er misschien al en dan plaats je een tweede. Controleer de post vóór elke nieuwe poging.Hoe het werkt
Een account uit het bestand kiezen
SubReply kiest een actief Reddit-account met een geldige sessie, dat het minst is ingezet — zodat het API-verkeer nooit op één account rust.
503 en schrijft niets af.Residentiële proxy
De sessie loopt achter een vast residentieel IP dat aan het account hangt. Eén account houdt zijn IP van post tot post, net als een echte gebruiker.
Publiceren via een browser
Een echte Chrome opent de post en typt de reactie, met menselijke pauzes en een menselijk typeritme. Er komt geen officiële Reddit API aan te pas.
Étape 1
Een account uit het bestand kiezen
503 en schrijft niets af.Bescherming tegen shadowban
- Aged accounts: echte accounts met historie en karma, geen accounts die op bestelling zijn aangemaakt.
- Nagebootst menselijk gedrag: echte navigatie, wisselende pauzes, geleidelijk typen.
- Accountrotatie: het minst ingezette account publiceert als eerste, zodat het bestand het volume opvangt in plaats van het te concentreren.
Facturatie
De 50 credits worden na bevestiging van de publicatie afgeschreven, nooit bij het versturen. Concreet:
200met een permalink → afgeschreven.202,422,503→ geen afschrijving.- Herhaling op dezelfde
post_url→credits_used: 0, de afschrijving is idempotent per post. Let op: dat beschermt tegen een dubbele afschrijving, niet tegen een dubbele reactie op Reddit.
Fouten die specifiek zijn voor deze route
| Code | Oorzaak | Wat te doen |
|---|---|---|
503 | Publicatiedienst niet beschikbaar: geen account om mee te plaatsen, of de dienst antwoordt niet. | Probeer het over 60 s opnieuw. Er is niets afgeschreven en als de reactie tóch verstuurd was, beschermt de idempotente afschrijving je tegen dubbel betalen. |
422 | Functionele weigering: post vergrendeld, gearchiveerd of verwijderd, subreddit alleen-lezen, of Reddit-account tijdelijk niet beschikbaar. | Niet ongewijzigd opnieuw proberen — verhelpen. De foutmelding bevat de exacte reden die de dienst teruggaf. |
De volledige lijst staat op de pagina foutcodes.
Timeout aan de clientkant
Een aanroep kan tot twee minuten duren. Zet de timeout van je HTTP-client op minstens 180 seconden: een korte timeout aan de clientkant verbreekt de verbinding zonder de publicatie te annuleren, en dan verlies je de permalink van een reactie die er wél staat.
const response = await fetch("https://subreply.io/api/v1/publish", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.SUBREPLY_API_KEY}`,
},
body: JSON.stringify({ post_url: postUrl, comment }),
// 3 minutes : la publication passe par un vrai navigateur.
signal: AbortSignal.timeout(180_000),
});