Kommentarer, moderation og sociale feeds gennem én REST API og SDK'er til 10+ sprog. Hent, publicer og modererer fra din backend, og stream derefter ny aktivitet til hver læser i realtid over WebSockets.
FastComments er mere end kommentarer. Byg diskussioner, moderation og sociale feeds på den samme API- og SDK-pakke.
Trådede kommentarer og live-chat. Hent, publicer, stem, fastgør, svar og søg, med SSO og opdateringer i realtid indbygget.
En dedikeret moderationsflade med 40+ endpoints. Godkend, markér, bloker, udeluk, lås og revidér, understøttet af automatisk spamfiltrering.
Byg aktivitets- og sociale feeds med opslag, medier, reaktioner og følgere, og push derefter nye opslag til hver klient live.
cURL og typede SDK'er til Node, Python, PHP, Ruby, Go, Java, Rust, Swift og C++. Over 200 endpoints dækker kommentarer, stemmer, sider, SSO-brugere, feed-opslag, moderation og notifikationer, alt sammen bag én enkelt API-nøgle.
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();
Åbn én forbindelse og modtag hver ny kommentar, redigering, stemme og tilstedeværelsesopdatering i det øjeblik den sker. Ingen begivenheder går tabt: ved genforbindelse hentes event log på ny for at afspille alt, der blev sendt, mens klienten var offline. Native WebSocket-abonnenter leveres til Node, React Native, Java, Swift og C++. Alle andre sprog forbliver i realtid ved at polle 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'
Slip for at bygge og vedligeholde din egen kommentar-UI. Vores dedikerede, vedligeholdte SDK'er til React Native, Android og iOS leverer native UI-komponenter til trådede kommentarer, live-chat og feeds. Sæt en visning ind, angiv en konfiguration, og så er du færdig.
npm: fastcomments-react-native-sdk
Native komponenter, ingen webview. Sæt FastCommentsLiveCommenting, FastCommentsLiveChat eller FastCommentsFeed ind og angiv en konfiguration.
Se live-demoencom.fastcomments:sdk
Native Android UI-komponenter. Tilføj FastCommentsView til dit layout for trådede kommentarer, afstemning, notifikationer og feeds. Android 8.0+.
Se på GitHubSwift Package: FastCommentsUI
Et native SwiftUI-bibliotek til trådede kommentarer, sociale feeds og live-chat. iOS 16+ og macOS 14+.
Se på GitHubÉn API-nøgle, én base-URL. Alt hvad dashboardet kan, kan din kode også.
Typede klienter til Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ og flere, så du bygger i din stack i stedet for vores.
Nye kommentarer når hver læser i det øjeblik de publiceres, uden opdatering og uden polling. Hvis en læser genforbinder, afspilles mistede begivenheder fra loggen.
Single sign-on, kommentarmoderation og spamfiltrering er indbygget, så de svære dele er håndteret, før du skriver en eneste linje.
Vi driver lageret og realtidsinfrastrukturen på tværs af et globalt netværk. Du kalder API'en og leverer.
Én API- og SDK-pakke bag kommentartråde, chat og live-aktivitet på tværs af web-, mobil- og server-apps.
Stream beskeder til alle i rummet i realtid, med tilstedeværelsestal og skriveaktivitet.
Tilføj indlejrede kommentarsektioner med afstemning til artikler, produkter og opslag med få API-kald.
Publicer til et feed og push nye elementer og reaktioner til tilsluttede klienter, efterhånden som de ankommer.
Indsaml spørgsmål, svar, stemmer og afstemningsresultater, og ranger og vis dem derefter live.
Start en gratis prøveperiode og hent dit tenant-ID og din API-nøgle fra dashboardet.
Tilføj SDK'en til dit sprog, eller kald REST API'en direkte med cURL og din x-api-key-header.
Indlæs kommentarer, publicer fra din backend, og abonnér på ændringer for at streame opdateringer til hver læser.
FastComments kører på tværs af flere regioner på vores egen infrastruktur. Skrivninger replikeres mellem regioner, noder failover automatisk, og læsere betjenes fra den placering, der er nærmest dem.
Skrivninger accepteres i mere end én region og replikeres mellem dem, så der er ingen enkelt fejlkilde.
Kommentarer og medier betjenes fra vores eget globale CDN og DNS, leveret fra den placering, der er nærmest dine brugere. Ingen tredjeparts-CDN.
Redundante noder failover af sig selv, så trafikken bliver ved med at flyde gennem et nedbrud. Understøttet af 99.99% oppetid.
Kør i USA eller EU. EU-regionen på eu.fastcomments.com holder data i regionen af hensyn til compliance.
Tusindvis af tilfredse kunder stoler på os for vores exceptionelle service, pålidelighed og innovative løsninger. Bliv en del af vores voksende fællesskab og oplev forskellen i dag!
Kom i gang
Nej. Widgetten er valgfri. Du kan bygge hele din kommentaroplevelse på REST API'en og SDK'erne og rendere alt selv.
Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ og Nim, plus en React Native SDK til mobil. Ethvert sprog kan også kalde REST API'en direkte.
Klienter åbner en WebSocket og modtager nye kommentarer, redigeringer, stemmer og tilstedeværelsesopdateringer som begivenheder, så der er ingen opdatering og ingen polling. Ingen begivenheder går tabt: hvis en klient afbrydes, henter den event log på ny ved genforbindelse for at afspille alt, der blev sendt, mens den var offline.
Nej. FastComments hoster realtidsinfrastrukturen. Din klient abonnerer med SDK'en, og vi leverer begivenhederne.
De poller event log-endpointet, som returnerer hver ændring siden et tidsstempel. SDK'erne til Node, React Native, Java, Swift og C++ inkluderer i stedet en native WebSocket-abonnent.
Specifikt for kommentarer forudberegner FastComments paginering ved hver skrivning for optimale indlæsningstider, så selv meget store tråde pagineres hurtigt.
Ja. Start en gratis prøveperiode med fuld adgang til API'en og SDK'erne, uden kreditkort. Efter prøveperioden skalerer betalte planer med din trafik.
Den fulde REST API- og SDK-reference findes på docs.fastcomments.com, hvor hvert endpoint, parameter og svar er dokumenteret.
Ja. FastComments betjener en EU-region på eu.fastcomments.com, og SDK'erne understøtter routing til den.
Start en gratis prøveperiode, hent din API-nøgle, og tilføj live-diskussioner til din app i dag.