Commenti, moderazione e feed social tramite un'unica API REST e SDK per oltre 10 linguaggi. Recupera, pubblica e modera dal tuo backend, poi trasmetti in tempo reale ogni nuova attività a tutti i lettori tramite WebSocket.
FastComments è molto più dei commenti. Crea discussioni, moderazione e feed social sulla stessa suite di API e SDK.
Commenti a thread e chat live. Recupera, pubblica, vota, fissa, rispondi e cerca, con SSO e aggiornamenti in tempo reale integrati.
Un'area dedicata alla moderazione con oltre 40 endpoint. Approva, segnala, blocca, banna, chiudi e verifica, con filtro antispam automatico.
Crea feed di attività e social con post, media, reazioni e follow, poi invia i nuovi post a ogni client in tempo reale.
cURL e SDK tipizzati per Node, Python, PHP, Ruby, Go, Java, Rust, Swift e C++. Oltre 200 endpoint coprono commenti, voti, pagine, utenti SSO, post dei feed, moderazione e notifiche, tutto dietro un'unica chiave API.
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();
Apri una sola connessione e ricevi ogni nuovo commento, modifica, voto e aggiornamento di presenza nel momento esatto in cui avviene. Nessun evento va perso: alla riconnessione l'event log viene recuperato di nuovo per riprodurre tutto ciò che è stato inviato mentre il client era offline. I subscriber WebSocket nativi sono disponibili per Node, React Native, Java, Swift e C++. Tutti gli altri linguaggi restano in tempo reale tramite il polling dell'event log.
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'
Evita di creare e mantenere la tua interfaccia di commenti. I nostri SDK dedicati e mantenuti per React Native, Android e iOS offrono componenti UI nativi per commenti a thread, chat live e feed. Inserisci una view, passa una config e il gioco è fatto.
npm: fastcomments-react-native-sdk
Componenti nativi, senza webview. Inserisci FastCommentsLiveCommenting, FastCommentsLiveChat o FastCommentsFeed e passa una config.
Guarda la demo livecom.fastcomments:sdk
Componenti UI nativi per Android. Aggiungi FastCommentsView al tuo layout per commenti a thread, voti, notifiche e feed. Android 8.0+.
Vedi su GitHubSwift Package: FastCommentsUI
Una libreria SwiftUI nativa per commenti a thread, feed social e chat live. iOS 16+ e macOS 14+.
Vedi su GitHubUna chiave API, un URL di base. Tutto ciò che fa la dashboard può farlo anche il tuo codice.
Client tipizzati per Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ e altri, così sviluppi nel tuo stack anziché nel nostro.
I nuovi commenti raggiungono ogni lettore nel momento in cui vengono pubblicati, senza refresh e senza polling. Se un lettore si riconnette, gli eventi persi vengono riprodotti dal log.
Single sign-on, moderazione dei commenti e filtro antispam sono integrati, così le parti difficili sono già gestite prima ancora che tu scriva una riga di codice.
Gestiamo lo storage e l'infrastruttura in tempo reale su una rete globale. Tu chiami l'API e vai in produzione.
Un'unica suite di API e SDK dietro thread di commenti, chat e attività live su app web, mobile e server.
Trasmetti i messaggi a tutti nella sala in tempo reale, con conteggio delle presenze e indicatore di digitazione.
Aggiungi sezioni di commenti annidate e votabili ad articoli, prodotti e post con poche chiamate API.
Pubblica su un feed e invia nuovi elementi e reazioni ai client connessi non appena arrivano.
Raccogli domande, risposte, voti e risultati dei sondaggi, poi ordinali e mostrali in tempo reale.
Avvia una prova gratuita e recupera il tuo tenant ID e la chiave API dalla dashboard.
Aggiungi l'SDK per il tuo linguaggio, oppure chiama direttamente l'API REST con cURL e la tua intestazione x-api-key.
Carica i commenti, pubblica dal tuo backend e iscriviti alle modifiche per trasmettere gli aggiornamenti a ogni lettore.
FastComments opera su più regioni sulla nostra infrastruttura. Le scritture si replicano tra le regioni, i nodi eseguono il failover automaticamente e i lettori vengono serviti dalla località più vicina a loro.
Le scritture vengono accettate in più di una regione e replicate tra loro, così non esiste un singolo punto di errore.
Commenti e media vengono serviti dalla nostra CDN e DNS globali, distribuiti dalla località più vicina ai tuoi utenti. Nessuna CDN di terze parti.
I nodi ridondanti eseguono il failover da soli, così il traffico continua a fluire durante un'interruzione. Supportato da un uptime del 99.99%.
Opera negli US o nell'EU. La regione EU su eu.fastcomments.com mantiene i dati nella regione per la conformità.
Migliaia di clienti soddisfatti si affidano a noi per il nostro servizio eccezionale, la nostra affidabilità e le nostre soluzioni innovative. Unisciti alla nostra community in crescita e scopri la differenza oggi stesso!
Inizia ora
No. Il widget è opzionale. Puoi costruire l'intera esperienza di commenti sull'API REST e sugli SDK, renderizzando tutto autonomamente.
Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ e Nim, oltre a un SDK React Native per il mobile. Qualsiasi linguaggio può anche chiamare direttamente l'API REST.
I client aprono un WebSocket e ricevono nuovi commenti, modifiche, voti e aggiornamenti di presenza sotto forma di eventi, quindi senza refresh e senza polling. Nessun evento va perso: se un client si disconnette, recupera di nuovo l'event log alla riconnessione per riprodurre tutto ciò che è stato inviato mentre era offline.
No. FastComments ospita l'infrastruttura in tempo reale. Il tuo client si iscrive con l'SDK e noi consegniamo gli eventi.
Eseguono il polling dell'endpoint dell'event log, che restituisce ogni modifica a partire da un timestamp. Gli SDK per Node, React Native, Java, Swift e C++ includono invece un subscriber WebSocket nativo.
Nello specifico per i commenti, FastComments pre-calcola la paginazione a ogni scrittura per tempi di caricamento ottimali, così anche i thread molto grandi si paginano velocemente.
Sì. Avvia una prova gratuita con accesso completo all'API e agli SDK, senza carta di credito. Al termine della prova, i piani a pagamento scalano con il tuo traffico.
Il riferimento completo dell'API REST e degli SDK è disponibile su docs.fastcomments.com, dove ogni endpoint, parametro e risposta è documentato.
Sì. FastComments offre una regione EU su eu.fastcomments.com, e gli SDK supportano l'instradamento verso di essa.
Avvia una prova gratuita, recupera la tua chiave API e aggiungi discussioni live alla tua app oggi stesso.