Commet
  • Precios
Iniciar SesiónRegistrarse
Introducción

Inicio rápido

Aprender

Recursos

Referencia del SDKVersionado de APIManejo de erroresTestingCLI

Plugins

Better Auth
DocumentaciónRecursosConstruir con AIAPI ReferenceWebhooks

Manejo de errores

Maneja errores con reintentos automáticos y clases de error tipadas

Clases de error

import { CommetAPIError, CommetValidationError } from '@commet/node'

try {
  await commet.customers.create({ email: 'invalid' })
} catch (error) {
  if (error instanceof CommetValidationError) {
    console.log(error.validationErrors)
    // { email: ['Invalid email format'] }
  }

  if (error instanceof CommetAPIError) {
    console.log(error.statusCode, error.message)
  }
}
from commet import CommetAPIError, CommetValidationError

try:
    commet.customers.create(email='invalid')
except CommetValidationError as e:
    print(e.validation_errors)
    # { 'email': ['Invalid email format'] }
except CommetAPIError as e:
    print(e.status_code, e)
import (
    "errors"

    "github.com/commet-labs/commet-go/v7"
)

_, err := client.Customers.Create(ctx, &commet.CreateCustomerParams{Email: "invalid"})
if err != nil {
    var validationErr *commet.ValidationError
    if errors.As(err, &validationErr) {
        fmt.Println(validationErr.ValidationErrors)
        // map[email:[Invalid email format]]
    }

    var apiErr *commet.CommetError
    if errors.As(err, &apiErr) {
        fmt.Println(apiErr.StatusCode, apiErr.Message)
    }
}
import co.commet.CommetApiException;
import co.commet.CommetValidationException;

try {
    commet.customers().create("invalid");
} catch (CommetValidationException e) {
    System.out.println(e.getValidationErrors());
    // { email: [Invalid email format] }
} catch (CommetApiException e) {
    System.out.println(e.getStatusCode() + " " + e.getMessage());
}
use Commet\Exceptions\ApiException;
use Commet\Exceptions\ValidationException;

try {
    $commet->customers->create(email: 'invalid');
} catch (ValidationException $e) {
    print_r($e->validationErrors);
    // [ 'email' => ['Invalid email format'] ]
} catch (ApiException $e) {
    echo $e->getStatusCode() . ' ' . $e->getMessage();
}
ClaseCaso de uso
CommetAPIError / CommetApiException / ApiExceptionErrores HTTP (4xx, 5xx)
CommetValidationError / CommetValidationException / ValidationExceptionInput inválido con detalles por campo
CommetError / CommetExceptionClase base de todos los errores

Go expone *commet.CommetError y *commet.ValidationError como tipos concretos — verifícalos con errors.As.

Reintentos automáticos

Los requests fallidos se reintentan con backoff exponencial (1s → 2s → 4s, máx 8s).

Reintentables: 408, 429, 500, 502, 503, 504

const commet = new Commet({
  apiKey: process.env.COMMET_API_KEY!,
  retries: 3,  // default
})
commet = Commet(
    api_key=os.environ['COMMET_API_KEY'],
    retries=3,  # default
)
client, err := commet.New(
    os.Getenv("COMMET_API_KEY"),
    commet.WithRetries(3), // default
)
Commet commet = Commet.builder()
    .apiKey(System.getenv("COMMET_API_KEY"))
    .retries(3) // default
    .build();
$commet = new Commet(
    apiKey: getenv('COMMET_API_KEY'),
    retries: 3, // default
);

Uso no bloqueante

No dejes que los errores de tracking rompan tu app:

commet.usage.track({
  customerId: 'user_123',
  feature: 'api_calls',
}).catch(console.error)

// Continúa sin esperar
try:
    commet.usage.track(customer_id='user_123', feature='api_calls')
except Exception as e:
    logger.error(e)

# Continúa sin esperar
go func() {
    _, err := client.Usage.Track(context.Background(), &commet.TrackUsageParams{
        CustomerID: "user_123",
        Feature:    "api_calls",
    })
    if err != nil {
        log.Printf("track failed: %v", err)
    }
}()

// Continúa sin esperar
CompletableFuture.runAsync(() -> {
    try {
        commet.usage().track(
            TrackParams.builder("api_calls")
                .customerId("user_123")
                .build()
        );
    } catch (Exception e) {
        log.error("track failed", e);
    }
});

// Continúa sin esperar
try {
    $commet->usage->track(
        customerId: 'user_123',
        feature: 'api_calls',
    );
} catch (\Throwable $e) {
    error_log($e->getMessage());
}

// Continúa sin esperar

¿Cómo está esta guía?

Versionado de API

Cómo Commet versiona su API y webhooks para que tu integración nunca se rompa inesperadamente.

Testing

Testea de forma segura con el entorno sandbox

En esta página

Clases de error
Reintentos automáticos
Uso no bloqueante