Το API σχολίων για ζωντανές συζητήσεις

Σχόλια, εποπτεία και κοινωνικές ροές μέσα από ένα REST API και SDK για 10+ γλώσσες. Ανακτήστε, δημοσιεύστε και εποπτεύστε από το backend σας και στη συνέχεια μεταδώστε νέα δραστηριότητα σε κάθε αναγνώστη σε πραγματικό χρόνο μέσω WebSockets.

Μία πλατφόρμα, τρία API

Το FastComments είναι κάτι περισσότερο από σχόλια. Δημιουργήστε συζητήσεις, εποπτεία και κοινωνικές ροές πάνω στο ίδιο API και στην ίδια σουίτα SDK.

API Σχολίων

Σχόλια με νήματα και ζωντανή συνομιλία. Ανακτήστε, δημοσιεύστε, ψηφίστε, καρφιτσώστε, απαντήστε και αναζητήστε, με ενσωματωμένο SSO και ενημερώσεις σε πραγματικό χρόνο.

API Εποπτείας

Μια ειδική επιφάνεια εποπτείας με 40+ endpoints. Εγκρίνετε, επισημάνετε, αποκλείστε, μπλοκάρετε, κλειδώστε και ελέγξτε, με υποστήριξη αυτόματου φιλτραρίσματος spam.

API Κοινωνικής Ροής

Δημιουργήστε ροές δραστηριότητας και κοινωνικές ροές με αναρτήσεις, πολυμέσα, αντιδράσεις και ακολουθίες και στη συνέχεια προωθήστε νέες αναρτήσεις ζωντανά σε κάθε client.

Καλέστε το API από οποιοδήποτε stack

cURL και τυποποιημένα SDK για Node, Python, PHP, Ruby, Go, Java, Rust, Swift και C++. Πάνω από 200 endpoints καλύπτουν σχόλια, ψήφους, σελίδες, χρήστες SSO, αναρτήσεις ροής, εποπτεία και ειδοποιήσεις, όλα πίσω από ένα μόνο κλειδί API.

Εγκατάστασηnpm install fastcomments-sdk
import { 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 fastcomments
import 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 fastcomments
require '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-go
package 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();

Εγγραφείτε στη ζωντανή ροή

Ανοίξτε μία σύνδεση και λάβετε κάθε νέο σχόλιο, επεξεργασία, ψήφο και ενημέρωση παρουσίας τη στιγμή που συμβαίνει. Δεν χάνεται κανένα συμβάν: κατά την επανασύνδεση, το event log ανακτάται ξανά για να αναπαραχθεί ό,τι στάλθηκε όσο ο client ήταν εκτός σύνδεσης. Native συνδρομητές WebSocket διατίθενται για Node, React Native, Java, Swift και C++. Κάθε άλλη γλώσσα παραμένει σε πραγματικό χρόνο κάνοντας polling στο event log.

Εγκατάστασηnpm install fastcomments-sdk
import { 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-sdk
import 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 fastcomments
import 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'

Native SDK για κινητά, έτοιμα για ενσωμάτωση

Αποφύγετε τη δημιουργία και συντήρηση του δικού σας UI σχολίων. Τα ειδικά, συντηρούμενα SDK μας για React Native, Android και iOS διαθέτουν native στοιχεία UI για σχόλια με νήματα, ζωντανή συνομιλία και ροές. Προσθέστε ένα view, περάστε μια διαμόρφωση και τελειώσατε.

React Native

npm: fastcomments-react-native-sdk

Native στοιχεία, χωρίς webview. Προσθέστε το FastCommentsLiveCommenting, το FastCommentsLiveChat ή το FastCommentsFeed και περάστε μια διαμόρφωση.

Δείτε το ζωντανό demo

Android

com.fastcomments:sdk

Native στοιχεία UI για Android. Προσθέστε το FastCommentsView στη διάταξή σας για σχόλια με νήματα, ψηφοφορία, ειδοποιήσεις και ροές. Android 8.0+.

Προβολή στο GitHub

iOS

Swift Package: FastCommentsUI

Μια native βιβλιοθήκη SwiftUI για σχόλια με νήματα, κοινωνικές ροές και ζωντανή συνομιλία. iOS 16+ και macOS 14+.

Προβολή στο GitHub

Τα κομμάτια που αλλιώς θα έφτιαχνες μόνος σου

200+ REST endpoints

Ένα κλειδί API, ένα base URL. Ό,τι κάνει ο πίνακας ελέγχου, μπορεί να το κάνει και ο κώδικάς σας.

SDK για 10+ γλώσσες

Τυποποιημένοι clients για Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ και άλλα, ώστε να αναπτύσσετε στο δικό σας stack αντί στο δικό μας.

Πραγματικός χρόνος μέσω WebSockets

Τα νέα σχόλια φτάνουν σε κάθε αναγνώστη τη στιγμή που δημοσιεύονται, χωρίς ανανέωση και χωρίς polling. Αν ένας αναγνώστης επανασυνδεθεί, τα χαμένα συμβάντα αναπαράγονται από το log.

Εποπτεία, SSO και προστασία από spam

Το single sign-on, η εποπτεία σχολίων και το φιλτράρισμα spam είναι ενσωματωμένα, ώστε τα δύσκολα μέρη να έχουν λυθεί πριν γράψετε μία γραμμή.

Φιλοξενία και κλιμάκωση για εσάς

Εμείς διαχειριζόμαστε την αποθήκευση και την υποδομή πραγματικού χρόνου σε ένα παγκόσμιο δίκτυο. Εσείς καλείτε το API και προχωράτε.

Τι μπορείτε να δημιουργήσετε

Ένα API και μία σουίτα SDK πίσω από νήματα σχολίων, συνομιλία και ζωντανή δραστηριότητα σε εφαρμογές web, κινητών και server.

Δωμάτια ζωντανής συνομιλίας

Μεταδώστε μηνύματα σε όλους στο δωμάτιο σε πραγματικό χρόνο, με μετρήσεις παρουσίας και δραστηριότητα πληκτρολόγησης.

Νήματα σχολίων

Προσθέστε ενότητες σχολίων με ένθεση και δυνατότητα ψήφου σε άρθρα, προϊόντα και αναρτήσεις με λίγες κλήσεις API.

Ροές δραστηριότητας

Δημοσιεύστε σε μια ροή και προωθήστε νέα στοιχεία και αντιδράσεις στους συνδεδεμένους clients μόλις φτάνουν.

Ερωτήσεις-απαντήσεις και δημοσκοπήσεις

Συγκεντρώστε ερωτήσεις, απαντήσεις, ψήφους και αποτελέσματα δημοσκοπήσεων και στη συνέχεια κατατάξτε και εμφανίστε τα ζωντανά.

Ζωντανά σε τρία βήματα

1

Αποκτήστε το κλειδί API σας

Ξεκινήστε μια δωρεάν δοκιμή και πάρτε το tenant ID και το κλειδί API σας από τον πίνακα ελέγχου.

2

Εγκαταστήστε το SDK

Προσθέστε το SDK για τη γλώσσα σας ή καλέστε το REST API απευθείας με cURL και την κεφαλίδα x-api-key σας.

3

Ανακτήστε, δημοσιεύστε και βγείτε ζωντανά

Φορτώστε σχόλια, δημοσιεύστε από το backend σας και εγγραφείτε στις αλλαγές για να μεταδίδετε ενημερώσεις σε κάθε αναγνώστη.

Παγκόσμια κατανεμημένο και υψηλής διαθεσιμότητας

Το FastComments λειτουργεί σε πολλές περιοχές πάνω στη δική μας υποδομή. Οι εγγραφές αναπαράγονται μεταξύ περιοχών, οι κόμβοι αναλαμβάνουν αυτόματα σε περίπτωση βλάβης και οι αναγνώστες εξυπηρετούνται από την πλησιέστερη σε αυτούς τοποθεσία.

Multi-master, πολλαπλών περιοχών

Οι εγγραφές γίνονται δεκτές σε περισσότερες από μία περιοχές και αναπαράγονται μεταξύ τους, ώστε να μην υπάρχει κανένα μεμονωμένο σημείο αστοχίας.

Το δικό μας δίκτυο edge

Τα σχόλια και τα πολυμέσα εξυπηρετούνται από το δικό μας παγκόσμιο CDN και DNS, με παράδοση από την πλησιέστερη στους χρήστες σας τοποθεσία. Χωρίς CDN τρίτων.

Αυτόματη ανάληψη σε βλάβη

Οι πλεονάζοντες κόμβοι αναλαμβάνουν μόνοι τους, ώστε η κίνηση να συνεχίζει να ρέει κατά τη διάρκεια μιας διακοπής. Με υποστήριξη 99.99% uptime.

Τοπική διαμονή δεδομένων

Λειτουργήστε στις ΗΠΑ (US) ή στην ΕΕ (EU). Η περιοχή EU στο eu.fastcomments.com διατηρεί τα δεδομένα εντός περιοχής για λόγους συμμόρφωσης.

Γίνετε κι εσείς ευχαριστημένοι πελάτες μας

Χιλιάδες ικανοποιημένοι πελάτες μας εμπιστεύονται για την εξαιρετική μας εξυπηρέτηση, την αξιοπιστία και τις καινοτόμες λύσεις μας. Γίνετε μέλος της αναπτυσσόμενης κοινότητάς μας και βιώστε τη διαφορά σήμερα!

Ξεκινήστε

Συχνές ερωτήσεις για το API σχολίων

Πρέπει να χρησιμοποιήσω το widget του FastComments;

Όχι. Το widget είναι προαιρετικό. Μπορείτε να χτίσετε ολόκληρη την εμπειρία σχολίων σας πάνω στο REST API και τα SDK και να αποδώσετε τα πάντα μόνοι σας.

Ποιες γλώσσες διαθέτουν SDK;

Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ και Nim, μαζί με ένα SDK React Native για κινητά. Οποιαδήποτε γλώσσα μπορεί επίσης να καλέσει το REST API απευθείας.

Πώς λειτουργεί ο πραγματικός χρόνος;

Οι clients ανοίγουν ένα WebSocket και λαμβάνουν νέα σχόλια, επεξεργασίες, ψήφους και ενημερώσεις παρουσίας ως συμβάντα, ώστε να μην υπάρχει ανανέωση ούτε polling. Δεν χάνεται κανένα συμβάν: αν ένας client αποσυνδεθεί, ανακτά ξανά το event log κατά την επανασύνδεση για να αναπαραγάγει ό,τι στάλθηκε όσο ήταν εκτός σύνδεσης.

Χρειάζεται να τρέξω τον δικό μου server WebSocket;

Όχι. Το FastComments φιλοξενεί την υποδομή πραγματικού χρόνου. Ο client σας εγγράφεται με το SDK και εμείς παραδίδουμε τα συμβάντα.

Πώς παραμένουν ζωντανές οι γλώσσες χωρίς native συνδρομητή;

Κάνουν polling στο endpoint του event log, το οποίο επιστρέφει κάθε αλλαγή από μια χρονική σήμανση και μετά. Τα SDK για Node, React Native, Java, Swift και C++ περιλαμβάνουν αντ' αυτού έναν native συνδρομητή WebSocket.

Πώς λειτουργεί η σελιδοποίηση;

Ειδικά για τα σχόλια, το FastComments προϋπολογίζει τη σελιδοποίηση σε κάθε εγγραφή για βέλτιστους χρόνους φόρτωσης, ώστε ακόμη και πολύ μεγάλα νήματα να σελιδοποιούνται γρήγορα.

Υπάρχει δωρεάν δοκιμή;

Ναι. Ξεκινήστε μια δωρεάν δοκιμή με πλήρη πρόσβαση στο API και τα SDK, χωρίς πιστωτική κάρτα. Μετά τη δοκιμή, τα επί πληρωμή πλάνα κλιμακώνονται με την κίνησή σας.

Πού βρίσκεται η τεκμηρίωση του API;

Η πλήρης αναφορά REST API και SDK βρίσκεται στο docs.fastcomments.com, όπου τεκμηριώνεται κάθε endpoint, παράμετρος και απόκριση.

Μπορώ να διατηρήσω τα δεδομένα στην ΕΕ;

Ναι. Το FastComments εξυπηρετεί μια περιοχή EU στο eu.fastcomments.com και τα SDK υποστηρίζουν δρομολόγηση σε αυτήν.

Ξεκινήστε να χτίζετε σε λίγα λεπτά

Ξεκινήστε μια δωρεάν δοκιμή, πάρτε το κλειδί API σας και προσθέστε ζωντανές συζητήσεις στην εφαρμογή σας σήμερα.