Reacties, moderatie en sociale feeds via één REST-API en SDK's voor 10+ talen. Ophalen, plaatsen en modereren vanaf je backend, en vervolgens nieuwe activiteit realtime naar elke lezer streamen via WebSockets.
FastComments is meer dan reacties. Bouw discussies, moderatie en sociale feeds op dezelfde API- en SDK-suite.
Geneste reacties en live chat. Ophalen, plaatsen, stemmen, vastpinnen, reageren en zoeken, met ingebouwde SSO en realtime updates.
Een speciale moderatielaag met 40+ endpoints. Goedkeuren, markeren, blokkeren, verbannen, vergrendelen en auditen, ondersteund door automatische spamfiltering.
Bouw activiteiten- en sociale feeds met posts, media, reacties en volgers, en push vervolgens nieuwe posts live naar elke client.
cURL en getypeerde SDK's voor Node, Python, PHP, Ruby, Go, Java, Rust, Swift en C++. Ruim 200 endpoints dekken reacties, stemmen, pagina's, SSO-gebruikers, feed-posts, moderatie en meldingen, allemaal achter één API-sleutel.
npm install fastcomments-sdkimport { createFastCommentsSDK } from 'fastcomments-sdk/server';
const sdk = createFastCommentsSDK({
apiKey: 'your-api-key', // server-side only
basePath: 'https://fastcomments.com' // optional (default)
});
// Fetch comments for a page
const { comments } = await sdk.publicApi.getCommentsPublic({
tenantId: 'your-tenant-id',
urlId: 'page-url-id'
});
// Post a comment
await sdk.publicApi.createCommentPublic({
tenantId: 'your-tenant-id',
broadcastId: crypto.randomUUID(),
createComment: {
urlId: 'page-url-id',
url: 'https://example.com/post',
comment: 'Hello from the API!',
commenterName: 'Alice'
}
});
# Fetch comments for a page curl -s 'https://fastcomments.com/api/v1/comments?tenantId=your-tenant-id&urlId=page-url-id' \ -H 'x-api-key: YOUR_API_KEY'
pip install fastcommentsimport client
from client.api.public_api import GetCommentsPublicOptions
configuration = client.Configuration(host="https://fastcomments.com")
with client.ApiClient(configuration) as api_client:
api = client.PublicApi(api_client)
response = api.get_comments_public(
"your-tenant-id",
"page-url-id",
GetCommentsPublicOptions(page=0, limit=30),
)
for comment in response.comments:
print(comment.commenter_name, comment.comment)
composer require fastcomments/fastcomments-php<?php
require_once(__DIR__ . '/vendor/autoload.php');
$api = new FastComments\Client\Api\PublicApi(new GuzzleHttp\Client());
$result = $api->getCommentsPublic('your-tenant-id', 'page-url-id', [
'page' => 0,
'limit' => 30,
]);
foreach ($result->getComments() as $comment) {
echo $comment->getCommenterName() . ': ' . $comment->getComment() . PHP_EOL;
}
gem install fastcommentsrequire 'fastcomments-client'
api = FastCommentsClient::PublicApi.new
result = api.get_comments_public('your-tenant-id', 'page-url-id', { page: 0, limit: 30 })
result.comments.each do |comment|
puts "#{comment.commenter_name}: #{comment.comment}"
end
go get github.com/fastcomments/fastcomments-gopackage main
import (
"context"
"fmt"
openapiclient "github.com/fastcomments/fastcomments-go/client"
)
func main() {
client := openapiclient.NewAPIClient(openapiclient.NewConfiguration())
resp, _, err := client.PublicAPI.
GetCommentsPublic(context.Background(), "your-tenant-id").
UrlId("page-url-id").Page(0).Limit(30).Execute()
if err != nil {
panic(err)
}
for _, c := range resp.Comments {
fmt.Printf("%s: %s\n", c.GetCommenterName(), c.GetComment())
}
}
import com.fastcomments.invoker.ApiClient;
import com.fastcomments.invoker.Configuration;
import com.fastcomments.api.PublicApi;
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("https://fastcomments.com");
PublicApi api = new PublicApi(client);
var result = api.getCommentsPublic("your-tenant-id", "page-url-id")
.page(0)
.limit(30)
.execute();
System.out.println(result.getComments());
use fastcomments_sdk::client::apis::configuration::Configuration;
use fastcomments_sdk::client::apis::public_api::{get_comments_public, GetCommentsPublicParams};
let config = Configuration::new();
let params = GetCommentsPublicParams {
tenant_id: "your-tenant-id".to_string(),
url_id: "page-url-id".to_string(),
page: Some(0),
limit: Some(30),
..Default::default()
};
let result = get_comments_public(&config, params).await.unwrap();
for comment in result.comments {
println!("{:?}: {:?}", comment.commenter_name, comment.comment);
}
import FastCommentsSwift
var options = PublicAPI.GetCommentsPublicOptions()
options.page = 0
options.limit = 30
let result = try await PublicAPI.getCommentsPublic(
tenantId: "your-tenant-id",
urlId: "page-url-id",
options: options
)
print(result.comments ?? [])
#include "FastCommentsClient/api/PublicApi.h"
#include "FastCommentsClient/ApiClient.h"
#include "FastCommentsClient/ApiConfiguration.h"
using namespace org::openapitools::client::api;
auto config = std::make_shared<ApiConfiguration>();
config->setBaseUrl(utility::conversions::to_string_t("https://fastcomments.com"));
PublicApi publicApi(std::make_shared<ApiClient>(config));
auto resp = publicApi.getCommentsPublic(
utility::conversions::to_string_t("your-tenant-id"),
utility::conversions::to_string_t("page-url-id")
).get();
Open één verbinding en ontvang elke nieuwe reactie, bewerking, stem en presence-update op het moment dat het gebeurt. Er gaat geen enkel event verloren: bij een herverbinding wordt het event log opnieuw opgehaald om alles af te spelen dat is verstuurd terwijl de client offline was. Native WebSocket-abonnees zijn beschikbaar voor Node, React Native, Java, Swift en C++. Elke andere taal blijft realtime door het event log te pollen.
npm install fastcomments-sdkimport { subscribeToChanges, LiveEventType } from 'fastcomments-sdk/browser';
const config = { tenantId: 'your-tenant-id', urlId: 'page-url-id' };
const subscription = subscribeToChanges(
config,
'your-tenant-id', // tenantIdWS
'page-url-id', // urlIdWS
'user-session-id', // userIdWS (from the getComments response)
(event) => {
if (event.type === LiveEventType.new_comment) {
console.log('New comment:', event.comment?.comment);
}
return true; // event handled
},
(isConnected) => console.log(isConnected ? 'connected' : 'disconnected')
);
// later: subscription.close();
npm install fastcomments-react-native-sdkimport React, { useState } from 'react';
import { FastCommentsLiveCommenting } from 'fastcomments-react-native-sdk';
import { FastCommentsCommentWidgetConfig } from 'fastcomments-typescript';
export default function Comments() {
// <FastCommentsLiveCommenting> subscribes to the live feed automatically.
const [config] = useState<FastCommentsCommentWidgetConfig>({
tenantId: 'your-tenant-id',
urlId: 'page-url-id',
showLiveRightAway: true,
countAll: true,
});
return <FastCommentsLiveCommenting config={config} />;
}
import com.fastcomments.pubsub.LiveEventSubscriber;
import com.fastcomments.pubsub.SubscribeToChangesResult;
import com.fastcomments.core.CommentWidgetConfig;
import com.fastcomments.model.LiveEventType;
CommentWidgetConfig config = new CommentWidgetConfig();
config.tenant = "your-tenant-id";
config.urlId = "page-url-id";
LiveEventSubscriber subscriber = new LiveEventSubscriber();
SubscribeToChangesResult result = subscriber.subscribeToChanges(
config,
"your-tenant-id", // tenantIdWS
"page-url-id", // urlId
"page-url-id", // urlIdWS
"my-presence-id", // userIdWS
null, // canSeeCommentsCallback (optional)
(event) -> {
if (event.getType() == LiveEventType.NEW_COMMENT) {
System.out.println("New comment: " + event.getComment().getId());
}
}
);
// later: result.close();
import FastCommentsSwift
let config = LiveEventConfig(
tenantId: "your-tenant-id",
urlId: "page-url-id",
urlIdWS: "page-url-id", // URL-safe id for the WS server
userIdWS: "my-presence-id"
)
let subscriber = LiveEventSubscriber()
let result = subscriber.subscribeToChanges(config: config) { event in
if event.type == .newComment, let comment = event.comment {
print("New comment: \(comment.id ?? "")")
}
}
// later: result?.close()
#include <fastcomments/live/live_stream.hpp>
#include <iostream>
using namespace fastcomments::live;
LiveStreamConfig cfg;
cfg.wsBaseUrl = "wss://fastcomments.com"; // no trailing slash
LiveStream stream(cfg);
stream.onEvent([](const LiveEvent& ev) {
if (ev.type == EventType::NewComment) {
std::cout << "New comment at " << ev.timestamp << std::endl;
}
});
stream.subscribe("your-tenant-id", "page-url-id", "my-presence-id").wait();
// later: stream.close().wait();
pip install fastcommentsimport time
import client
configuration = client.Configuration(host="https://fastcomments.com")
with client.ApiClient(configuration) as api_client:
api = client.PublicApi(api_client)
start_time = int(time.time() * 1000) # ms epoch
while True:
result = api.get_event_log(
"your-tenant-id", "page-url-id", "my-user-id", start_time
)
for event in result.events:
print("event:", event.data)
start_time = int(event.created_at.timestamp() * 1000) + 1
time.sleep(2)
# startTime = epoch millis to replay from; advance it past the last event you saw curl -s 'https://fastcomments.com/api/v1/event-log/your-tenant-id?urlId=page-url-id&userIdWS=my-user-id&startTime=1720560000000' \ -H 'x-api-key: YOUR_API_KEY'
Bespaar je het bouwen en onderhouden van je eigen reactie-UI. Onze speciale, onderhouden SDK's voor React Native, Android en iOS leveren native UI-componenten voor geneste reacties, live chat en feeds. Plug een view in, geef een config door en je bent klaar.
npm: fastcomments-react-native-sdk
Native componenten, geen webview. Plug FastCommentsLiveCommenting, FastCommentsLiveChat of FastCommentsFeed in en geef een config door.
Bekijk de live democom.fastcomments:sdk
Native Android UI-componenten. Voeg FastCommentsView toe aan je layout voor geneste reacties, stemmen, meldingen en feeds. Android 8.0+.
Bekijk op GitHubSwift Package: FastCommentsUI
Een native SwiftUI-bibliotheek voor geneste reacties, sociale feeds en live chat. iOS 16+ en macOS 14+.
Bekijk op GitHubEén API-sleutel, één base-URL. Alles wat het dashboard doet, kan je code ook.
Getypeerde clients voor Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ en meer, zodat je bouwt in jouw stack in plaats van die van ons.
Nieuwe reacties bereiken elke lezer op het moment dat ze worden geplaatst, zonder verversen en zonder pollen. Als een lezer opnieuw verbindt, worden gemiste events opnieuw afgespeeld vanuit het log.
Single sign-on, reactiemoderatie en spamfiltering zijn ingebouwd, zodat de lastige onderdelen al geregeld zijn voordat je een regel schrijft.
Wij draaien de opslag en de realtime-infrastructuur over een wereldwijd netwerk. Jij roept de API aan en shipt.
Eén API- en SDK-suite achter reactiethreads, chat en live activiteit op web, mobiel en serverapps.
Stream berichten realtime naar iedereen in de room, met presence-tellingen en typ-activiteit.
Voeg geneste, votebare reactiesecties toe aan artikelen, producten en posts met een paar API-aanroepen.
Post naar een feed en push nieuwe items en reacties naar verbonden clients zodra ze binnenkomen.
Verzamel vragen, antwoorden, stemmen en pollresultaten, en rangschik en toon ze vervolgens live.
Start een gratis proefperiode en pak je tenant-ID en API-sleutel uit het dashboard.
Voeg de SDK voor jouw taal toe, of roep de REST-API rechtstreeks aan met cURL en je x-api-key-header.
Laad reacties, plaats vanaf je backend en abonneer je op wijzigingen om updates naar elke lezer te streamen.
FastComments draait over meerdere regio's op onze eigen infrastructuur. Writes repliceren tussen regio's, nodes vallen automatisch over en lezers worden bediend vanaf de locatie die het dichtst bij hen is.
Writes worden in meer dan één regio geaccepteerd en tussen die regio's gerepliceerd, zodat er geen enkel punt van falen is.
Reacties en media worden geleverd vanaf ons eigen wereldwijde CDN en DNS, afgeleverd vanaf de locatie die het dichtst bij je gebruikers is. Geen externe CDN.
Redundante nodes vallen zelfstandig over, zodat het verkeer blijft doorstromen tijdens een storing. Ondersteund door 99.99% uptime.
Draai in de US of de EU. De EU-regio op eu.fastcomments.com houdt data binnen de regio voor compliance.
Duizenden tevreden klanten vertrouwen op ons vanwege onze uitzonderlijke service, betrouwbaarheid en innovatieve oplossingen. Sluit u aan bij onze groeiende community en ervaar vandaag nog het verschil!
Aan de slag
Nee. De widget is optioneel. Je kunt je hele reactie-ervaring bouwen op de REST-API en SDK's en alles zelf renderen.
Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ en Nim, plus een React Native SDK voor mobiel. Elke taal kan de REST-API ook rechtstreeks aanroepen.
Clients openen een WebSocket en ontvangen nieuwe reacties, bewerkingen, stemmen en presence-updates als events, zodat er geen verversen en geen pollen nodig is. Er gaat geen enkel event verloren: als een client de verbinding verbreekt, haalt deze bij een herverbinding het event log opnieuw op om alles af te spelen dat is verstuurd terwijl hij offline was.
Nee. FastComments host de realtime-infrastructuur. Je client abonneert zich met de SDK en wij leveren de events.
Ze pollen het event log-endpoint, dat elke wijziging sinds een tijdstempel teruggeeft. De SDK's voor Node, React Native, Java, Swift en C++ bevatten in plaats daarvan een native WebSocket-abonnee.
Specifiek voor reacties berekent FastComments de paginering vooraf bij elke write voor optimale laadtijden, zodat zelfs zeer grote threads snel pagineren.
Ja. Start een gratis proefperiode met volledige toegang tot de API en SDK's, geen creditcard nodig. Na de proefperiode schalen de betaalde abonnementen mee met je verkeer.
De volledige REST-API- en SDK-referentie staat op docs.fastcomments.com, waar elk endpoint, elke parameter en elke response is gedocumenteerd.
Ja. FastComments biedt een EU-regio op eu.fastcomments.com, en de SDK's ondersteunen routering daarnaartoe.
Start een gratis proefperiode, pak je API-sleutel en voeg vandaag nog live discussies toe aan je app.