SOCIAL MEDIA

Check Reddit Comment Visibility API

Detect shadowban/auto-removal: read a comment's focused permalink JSON as a non-author and report whether it is actually visible to the public.

redditshadowbanmoderationsocial
Try it freeGet an API key

How to call it

Send one POST to api.upapi.io/reddit-check-comment-visibility.get with your key in the X-Api-Key header and the parameters below as a JSON body. Each call spends 4 weighted units of your monthly quota. The operation times out after 60 seconds. Identical requests are served from cache for 300 seconds, unbilled.

endpoint
POST https://api.upapi.io/reddit-check-comment-visibility.get

Check Reddit Comment Visibility API reference

Request parameters

proxyUrl
string — Exit IP for the view — SHOULD be the reader account's own pinned IP, and differ from the author's for a true third-party check.
commentId
string — t1_<id> (or bare id). If omitted, parsed from the permalink.
permalink
stringrequired — Comment permalink, e.g. /r/Advice/comments/<postid>/comment/<cid>/ (or full URL)
readerSessionCookies
string — A NON-AUTHOR pooled account's session cookie blob. REQUIRED in practice since 2026-07-30: Reddit answers every anonymous surface (HTML and .json) with a reCAPTCHA or 'blocked by network security' wall, so the cookie-less path is blocked and this check cannot run anonymously. Supplying a DIFFERENT account's session reads the comment the way any logged-in third party would — removed/shadowbanned comments are hidden from every non-author user, logged in or out, so the visibility verdict is the same. MUST NOT be the author's own session: Reddit shows an author their own removed comments, which would manufacture a false 'visible'.

Response fields

removed
booleanrequired
commentId
stringrequired
elapsedMs
integerrequired
fetchedAt
stringrequired
permalink
stringrequired
threadLoaded
booleanrequired
visibleToAnon
booleanrequired
shadowSuspected
booleanrequired

Example request and response

The example response is generated from this operation’s published output schema — it shows the shape and field names, not values from a recorded call.

json — example request body
{
  "permalink": "example"
}
json — example response shape
{
  "removed": false,
  "commentId": "example",
  "elapsedMs": 1,
  "fetchedAt": "example",
  "permalink": "example",
  "threadLoaded": false,
  "visibleToAnon": false,
  "shadowSuspected": false
}

Code snippets

cURL
curl
curl -X POST https://api.upapi.io/reddit-check-comment-visibility.get \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_API_KEY' \
  -d '{ "permalink": "example" }'
JavaScript
javascript
const response = await fetch('https://api.upapi.io/reddit-check-comment-visibility.get', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY',
  },
  body: JSON.stringify({
  "permalink": "example"
}),
});

const data = await response.json();
console.log(data);
Python
python
import requests

response = requests.post(
    'https://api.upapi.io/reddit-check-comment-visibility.get',
    headers={
        'Content-Type': 'application/json',
        'x-api-key': 'YOUR_API_KEY',
    },
    json={
  "permalink": "example"
},
)

print(response.json())
Go
go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

func main() {
	payload := []byte(`{ "permalink": "example" }`)

	req, _ := http.NewRequest("POST", "https://api.upapi.io/reddit-check-comment-visibility.get", bytes.NewBuffer(payload))
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("x-api-key", "YOUR_API_KEY")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var result map[string]any
	json.Unmarshal(body, &result)
	fmt.Println(result)
}
PHP
php
<?php

$payload = json_encode([
    'permalink' => 'example',
]);

$ch = curl_init('https://api.upapi.io/reddit-check-comment-visibility.get');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $payload,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
        'x-api-key: YOUR_API_KEY',
    ],
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
var_dump($data);
Ruby
ruby
require 'net/http'
require 'uri'
require 'json'

uri = URI('https://api.upapi.io/reddit-check-comment-visibility.get')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'

request = Net::HTTP::Post.new(uri.path)
request['Content-Type'] = 'application/json'
request['x-api-key'] = 'YOUR_API_KEY'
request.body = { "permalink": "example" }.to_json

response = http.request(request)
puts JSON.parse(response.body)
Java
java
import okhttp3.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;

OkHttpClient client = new OkHttpClient();
ObjectMapper mapper = new ObjectMapper();

String json = "{ \"permalink\": \"example\" }";

RequestBody body = RequestBody.create(json, MediaType.get("application/json"));
Request request = new Request.Builder()
    .url("https://api.upapi.io/reddit-check-comment-visibility.get")
    .post(body)
    .addHeader("Content-Type", "application/json")
    .addHeader("x-api-key", "YOUR_API_KEY")
    .build();

try (Response response = client.newCall(request).execute()) {
    Map<?, ?> result = mapper.readValue(response.body().string(), Map.class);
    System.out.println(result);
}
C#
csharp
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;

using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY");

var payload = JsonSerializer.Deserialize<object>("{ \"permalink\": \"example\" }");
var response = await client.PostAsJsonAsync("https://api.upapi.io/reddit-check-comment-visibility.get", payload);

var result = await response.Content.ReadFromJsonAsync<JsonElement>();
Console.WriteLine(result);

Frequently asked questions

How much does the Check Reddit Comment Visibility API cost per call?

Each call spends 4 weighted units of your plan's monthly quota. Full pricing is at https://upapi.io/pricing.

How do I authenticate to the Check Reddit Comment Visibility API?

Send your key in the X-Api-Key header. A free guest key is available without creating an account.

Are Check Reddit Comment Visibility API responses cached?

Yes — identical requests are served from cache for 300 seconds, and a cache hit is not billed.

More Social Media APIs

Browse every Social Media API →