La API de comentarios para debates en directo

Comentarios, moderación y feeds sociales a través de una sola API REST y SDKs para más de 10 lenguajes. Consulta, publica y modera desde tu backend, y luego transmite cada nueva actividad a todos los lectores en tiempo real mediante WebSockets.

Una plataforma, tres APIs

FastComments es más que comentarios. Crea debates, moderación y feeds sociales sobre la misma API y el mismo conjunto de SDKs.

API de comentarios

Comentarios en hilo y chat en directo. Consulta, publica, vota, fija, responde y busca, con SSO y actualizaciones en tiempo real integradas.

API de moderación

Una superficie de moderación dedicada con más de 40 endpoints. Aprueba, marca, bloquea, banea, cierra y audita, con filtrado de spam automático de fondo.

API de feed social

Crea feeds de actividad y sociales con publicaciones, contenido multimedia, reacciones y seguidores, y luego envía nuevas publicaciones a cada cliente en directo.

Llama a la API desde cualquier stack

cURL y SDKs tipados para Node, Python, PHP, Ruby, Go, Java, Rust, Swift y C++. Más de 200 endpoints cubren comentarios, votos, páginas, usuarios SSO, publicaciones de feed, moderación y notificaciones, todo tras una única clave de API.

Instalarnpm 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'
Instalarpip 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)
Instalarcomposer 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;
}
Instalargem 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
Instalargo 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();

Suscríbete al feed en directo

Abre una sola conexión y recibe cada nuevo comentario, edición, voto y actualización de presencia en el momento en que ocurre. No se pierde ningún evento: al reconectar se vuelve a obtener el event log para reproducir todo lo enviado mientras el cliente estaba desconectado. Los suscriptores WebSocket nativos están disponibles para Node, React Native, Java, Swift y C++. El resto de lenguajes se mantiene en tiempo real consultando el event log.

Instalarnpm 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();
Instalarnpm 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();
Instalarpip 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'

SDKs móviles nativos, listos para integrar

Olvídate de crear y mantener tu propia interfaz de comentarios. Nuestros SDKs dedicados y mantenidos para React Native, Android e iOS incluyen componentes de interfaz nativos para comentarios en hilo, chat en directo y feeds. Añade una vista, pasa una configuración y listo.

React Native

npm: fastcomments-react-native-sdk

Componentes nativos, sin webview. Añade FastCommentsLiveCommenting, FastCommentsLiveChat o FastCommentsFeed y pasa una configuración.

Ver la demo en directo

Android

com.fastcomments:sdk

Componentes de interfaz nativos de Android. Añade FastCommentsView a tu layout para comentarios en hilo, votación, notificaciones y feeds. Android 8.0+.

Ver en GitHub

iOS

Swift Package: FastCommentsUI

Una biblioteca SwiftUI nativa para comentarios en hilo, feeds sociales y chat en directo. iOS 16+ y macOS 14+.

Ver en GitHub

Las partes que de otro modo tendrías que construir tú mismo

Más de 200 endpoints REST

Una clave de API, una URL base. Todo lo que hace el panel, tu código también puede hacerlo.

SDKs para más de 10 lenguajes

Clientes tipados para Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ y más, para que construyas en tu stack en lugar del nuestro.

Tiempo real mediante WebSockets

Los nuevos comentarios llegan a cada lector en el momento en que se publican, sin recargas y sin polling. Si un lector se reconecta, los eventos perdidos se reproducen desde el registro.

Moderación, SSO y protección contra spam

El inicio de sesión único, la moderación de comentarios y el filtrado de spam están integrados, así que las partes difíciles ya están resueltas antes de escribir una sola línea.

Alojado y escalado por nosotros

Nos encargamos del almacenamiento y de la infraestructura en tiempo real en una red global. Tú llamas a la API y publicas.

Lo que puedes construir

Una sola API y un conjunto de SDKs detrás de hilos de comentarios, chat y actividad en directo en aplicaciones web, móviles y de servidor.

Salas de chat en directo

Transmite mensajes a todos los presentes en la sala en tiempo real, con recuento de presencia y actividad de escritura.

Hilos de comentarios

Añade secciones de comentarios anidados y votables a artículos, productos y publicaciones con unas pocas llamadas a la API.

Feeds de actividad

Publica en un feed y envía nuevos elementos y reacciones a los clientes conectados a medida que llegan.

Preguntas y respuestas y encuestas

Recopila preguntas, respuestas, votos y resultados de encuestas, y luego clasifícalos y muéstralos en directo.

En funcionamiento en tres pasos

1

Consigue tu clave de API

Inicia una prueba gratuita y obtén tu ID de tenant y tu clave de API desde el panel.

2

Instala el SDK

Añade el SDK de tu lenguaje, o llama directamente a la API REST con cURL y tu cabecera x-api-key.

3

Consulta, publica y ponlo en directo

Carga comentarios, publica desde tu backend y suscríbete a los cambios para transmitir actualizaciones a cada lector.

Distribuido globalmente y de alta disponibilidad

FastComments funciona en múltiples regiones sobre nuestra propia infraestructura. Las escrituras se replican entre regiones, los nodos conmutan por error de forma automática y los lectores se atienden desde la ubicación más cercana a ellos.

Multi-master, multirregión

Las escrituras se aceptan en más de una región y se replican entre ellas, así que no hay un único punto de fallo.

Nuestra propia red edge

Los comentarios y el contenido multimedia se sirven desde nuestro propio CDN y DNS globales, entregados desde la ubicación más cercana a tus usuarios. Sin CDN de terceros.

Conmutación por error automática

Los nodos redundantes conmutan por error por sí solos, de modo que el tráfico sigue fluyendo durante una interrupción. Respaldado por un 99.99% de tiempo de actividad.

Residencia regional de datos

Funciona en EE. UU. o en la UE. La región de la UE en eu.fastcomments.com mantiene los datos dentro de la región por cumplimiento normativo.

Únase a nuestros clientes satisfechos

Miles de clientes satisfechos confían en nosotros por nuestro excepcional servicio, confiabilidad y soluciones innovadoras. ¡Únase a nuestra creciente comunidad y experimente la diferencia hoy mismo!

Empezar

Preguntas frecuentes sobre la API de comentarios

¿Tengo que usar el widget de FastComments?

No. El widget es opcional. Puedes construir toda tu experiencia de comentarios sobre la API REST y los SDKs y renderizarlo todo tú mismo.

¿Qué lenguajes tienen un SDK?

Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ y Nim, además de un SDK de React Native para móvil. Cualquier lenguaje también puede llamar directamente a la API REST.

¿Cómo funciona el tiempo real?

Los clientes abren un WebSocket y reciben nuevos comentarios, ediciones, votos y actualizaciones de presencia como eventos, así que no hay recargas ni polling. No se pierde ningún evento: si un cliente se desconecta, vuelve a obtener el event log al reconectar para reproducir todo lo enviado mientras estaba desconectado.

¿Necesito ejecutar mi propio servidor WebSocket?

No. FastComments aloja la infraestructura en tiempo real. Tu cliente se suscribe con el SDK y nosotros entregamos los eventos.

¿Cómo se mantienen en directo los lenguajes sin un suscriptor nativo?

Consultan el endpoint del event log, que devuelve cada cambio desde una marca de tiempo. Los SDKs de Node, React Native, Java, Swift y C++ incluyen en cambio un suscriptor WebSocket nativo.

¿Cómo funciona la paginación?

Para los comentarios en concreto, FastComments precalcula la paginación en cada escritura para lograr tiempos de carga óptimos, de modo que incluso los hilos muy grandes se paginan rápido.

¿Hay una prueba gratuita?

Sí. Inicia una prueba gratuita con acceso completo a la API y los SDKs, sin necesidad de tarjeta de crédito. Tras la prueba, los planes de pago escalan con tu tráfico.

¿Dónde está la documentación de la API?

La referencia completa de la API REST y los SDKs está en docs.fastcomments.com, donde se documenta cada endpoint, parámetro y respuesta.

¿Puedo mantener los datos en la UE?

Sí. FastComments ofrece una región de la UE en eu.fastcomments.com, y los SDKs admiten el enrutamiento hacia ella.

Empieza a construir en minutos

Inicia una prueba gratuita, consigue tu clave de API y añade debates en directo a tu aplicación hoy mismo.