Documentation API

L'API Rexiew vous permet de rechercher des éléments, de lire des avis, de générer des avis IA, de soumettre des avis humains et d'intégrer des widgets d'avis sur n'importe quel site. Toutes les réponses sont en JSON.

URL de Base

https://rexiew.com/api

Tous les points de terminaison sont relatifs à cette URL de base.

Authentification

Public endpoints (reading reviews, searching, widgets) require no authentication. Endpoints that create or modify data require a JWT Bearer token.

To get a token, call POST /auth/login with your email and password. Include the token in subsequent requests:

Authorization: Bearer <access_token>

Access tokens expire after 1 hour. Use POST /auth/refresh with your refresh token to get a new one.

Gestion des erreurs

Errors return a JSON object with an error field and an appropriate HTTP status code.

{
  "error": "Invalid model_id"
}
CodeMeaning
400Bad request / validation error
401Unauthorized / invalid token
402Insufficient credits
403Forbidden / tier too low
404Resource not found
409Conflict (duplicate)
410Model retired
429Rate limit exceeded
502Upstream LLM error

Points de terminaison publics

Aucune authentification requise.

GET /health

Vérifiez si l'API fonctionne.

Réponse

{
  "status": "ok",
  "service": "Rexiew API",
  "version": "1.0.0"
}
GET /models

Lister tous les modèles LLM avec les exigences de niveau et le statut actif. Si authentifié, inclut si chaque modèle est accessible pour votre niveau d'abonnement.

Réponse

{
  "models": [
    {
      "id": 19,
      "slug": "claude-opus-4-6",
      "name": "Claude Opus 4.6",
      "description": "The most powerful Claude LLM model.",
      "provider": "anthropic",
      "cost": 1,
      "active": true
    }
  ],
  "user_tier": "free"
}
GET /things/{id}

Obtenez les détails d'une chose et tous ses avis.

Réponse

{
  "thing": {
    "id": 42,
    "name": "iPhone 16 Pro",
    "type": "product",
    "review_count": 7,
    "avg_rating": 4.3,
    "created_at": "2025-06-01 12:00:00"
  },
  "reviews": [
    {
      "review_id": 101,
      "model_id": 19,
      "llm_name": "Claude Opus 4.6",
      "rating": 4.5,
      "review": "The iPhone 16 Pro represents...",
      "created_at": "2025-06-02 09:30:00"
    }
  ]
}
GET /review/{id}

Obtenez les détails complets de l'avis, y compris les avantages, les inconvénients, les alternatives, les scores dimensionnels et le statut de vérification on-chain.

Réponse

{
  "review_id": 101,
  "thing_id": 42,
  "thing_name": "iPhone 16 Pro",
  "thing_type": "product",
  "model_id": 19,
  "llm_name": "Claude Opus 4.6",
  "reviewer_type": "ai",
  "review_aspect": "general",
  "rating": 4.5,
  "review": "The iPhone 16 Pro represents...",
  "pros": ["Excellent camera system", "Fast A18 chip"],
  "cons": ["High price", "Heavy"],
  "alternatives": [
    {"name": "Samsung Galaxy S25 Ultra", "difference": "More customizable with S Pen"}
  ],
  "dimensions": [
    {"slug": "build-quality", "label": "Build Quality", "score": 4.8}
  ],
  "blockinity_verified": false,
  "provifier_tx_digest": null,
  "created_at": "2025-06-02 09:30:00"
}
GET /review/{id}/verify

Vérifiez la preuve on-chain d'un avis humain signé via Provifier.

Réponse

{
  "verified": true,
  "tx_digest": "ABC123...",
  "chain": "sui",
  "data_hash": "sha256...",
  "explorer_url": "https://suiscan.xyz/mainnet/tx/ABC123..."
}

Points de Terminaison Authentifiés

These endpoints require a JWT Bearer token in the Authorization header.

POST /auth/login

Authentifiez-vous avec email et mot de passe. Retourne les tokens JWT d'accès et de rafraîchissement.

Corps de la requête

{
  "email": "user@example.com",
  "password": "yourpassword"
}

Réponse

{
  "access_token": "eyJ...",
  "refresh_token": "eyJ...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "user": {
    "id": 1,
    "email": "user@example.com",
    "role": "user",
    "credit_balance": 500
  }
}
POST /auth/register

Créez un nouveau compte. Le mot de passe doit contenir au moins 10 caractères.

Corps de la requête

{
  "email": "newuser@example.com",
  "password": "securepassword"
}

Response 201 Created

{
  "access_token": "eyJ...",
  "refresh_token": "eyJ...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "user": {
    "id": 2,
    "email": "newuser@example.com",
    "role": "user",
    "credit_balance": 0
  }
}
POST /auth/refresh

Échangez un jeton d'actualisation valide contre de nouveaux jetons d'accès et d'actualisation.

Corps de la requête

{
  "refresh_token": "eyJ..."
}

Réponse

{
  "access_token": "eyJ...",
  "refresh_token": "eyJ...",
  "token_type": "Bearer",
  "expires_in": 3600
}
POST /review/resolve Auth

Étape préalable avant la génération d'un avis. Résout l'entrée de l'utilisateur en quelque chose d'existant dans la base de données ou suggère d'en créer un nouveau. Utilise un modèle d'IA en interne pour la correspondance.

Corps de la requête

{
  "thing_name": "iPhone 16 Pro",
  "thing_type": "product"
}

Réponse

{
  "resolved": {
    "match": true,
    "thing_id": 42,
    "thing_name": "iPhone 16 Pro",
    "thing_type": "product",
    "thing_slug": "iphone-16-pro",
    "review_count": 7,
    "avg_rating": 4.3
  },
  "candidates": [...],
  "suggestion": {
    "canonical_name": "iPhone 16 Pro",
    "thing_type": "product",
    "description": "Apple's premium smartphone...",
    "tags": ["smartphone", "apple", "premium"],
    "category": "smartphones"
  },
  "dimensions": [
    {"dimension_slug": "build-quality", "dimension_label": "Build Quality"}
  ],
  "aspects": [
    {"slug": "general", "label": "General", "review_count": 5},
    {"slug": "affiliate-program", "label": "Affiliate Program", "review_count": 2},
    {"slug": "pricing", "label": "Pricing", "review_count": 0}
  ],
  "cost_usd": 0.002,
  "elapsed_ms": 1200
}
POST /review/generate Auth

Generate an AI review for a thing. Costs 1 credit per review. Active models: Claude Opus 4.6 (ID 19) and GPT 5.4 (ID 25).

Corps de la requête

{
  "thing_name": "iPhone 16 Pro",
  "thing_type": "product",
  "model_id": 19,
  "thing_id": 42,
  "thing_description": "Apple's premium smartphone"
}
FieldTypeRequiredDescription
thing_namestringYes*Name of the thing to review (max 255 chars)
thing_typestringNoproduct, service, place, brand, or other
model_idintYes19 (Opus 4.6) or 25 (GPT 5.4)
thing_idintNoIf provided, skips resolver and uses this thing directly
thing_descriptionstringNoDescription override for new things (max 255 chars)
review_aspectstringNoAspect to focus on (e.g. "affiliate-program", "pricing"). Defaults to "general"

* Required if thing_id is not provided.

Response 201 Created

{
  "review_id": 108,
  "thing_id": 42,
  "thing_name": "iPhone 16 Pro",
  "review_aspect": "general",
  "rating": 4.5,
  "review": "The iPhone 16 Pro represents...",
  "pros": ["Excellent camera", "Fast chip"],
  "cons": ["Expensive", "Heavy"],
  "alternatives": [
    {"name": "Samsung Galaxy S25 Ultra", "difference": "More customizable"}
  ],
  "llm_name": "Claude Opus 4.6",
  "llm_provider": "anthropic",
  "dimensions": [
    {"slug": "build-quality", "label": "Build Quality", "score": 4.8}
  ],
  "credits_spent": 1,
  "tokens": {"input_tokens": 850, "output_tokens": 620},
  "cost_usd": 0.059,
  "elapsed_ms": 8500
}
POST /review/human Auth

Soumettez un avis écrit par un humain. Limité à 1 par chose par utilisateur par jour. Incluez éventuellement une adresse de portefeuille pour la vérification Blockinity.

Corps de la requête

{
  "thing_id": 42,
  "rating_score": 4.5,
  "review_text": "I've used the iPhone 16 Pro for 3 months now...",
  "review_aspect": "general",
  "dimension_scores": {
    "build-quality": 4.8,
    "value-for-money": 3.5
  },
  "wallet_address": "0x..."
}

Response 201 Created

{
  "review_id": 109,
  "thing_id": 42,
  "thing_name": "iPhone 16 Pro",
  "reviewer_type": "human",
  "review_aspect": "general",
  "rating": 4.5,
  "review": "I've used the iPhone 16 Pro for 3 months now...",
  "dimensions": [
    {"slug": "build-quality", "label": "Build Quality", "score": 4.8}
  ],
  "blockinity_verified": true,
  "canonical_data": "{...}"
}
PATCH /review/{id}/sign Auth

Joignez les données de signature on-chain Provifier à un avis humain que vous possédez. Rend l'avis cryptographiquement vérifiable.

Corps de la requête

{
  "tx_digest": "ABC123...",
  "data_hash": "sha256...",
  "chain": "sui"
}

Réponse

{
  "review_id": 109,
  "signed": true,
  "tx_digest": "ABC123...",
  "chain": "sui",
  "data_hash": "sha256..."
}
GET /review/history?page=1&limit=20 Auth

Obtenez l'historique des avis de l'utilisateur authentifié, paginé.

Paramètres

ParamTypeDefaultDescription
pageint1Page number
limitint20Results per page (max 50)

Réponse

{
  "reviews": [...],
  "total": 45,
  "page": 1,
  "limit": 20,
  "pages": 3
}
GET /user/profile Auth

Obtenez le profil, le solde de crédits et les informations d'abonnement de l'utilisateur authentifié.

Réponse

{
  "user": {
    "id": 1,
    "email": "user@example.com",
    "role": "user",
    "credit_balance": 500,
    "member_since": "2025-01-15 10:00:00",
    "total_reviews": 23,
    "wallet_address": null
  }
}

Points d'accès des widgets

Public, aucune authentification requise. Les réponses sont mises en cache pendant 5 minutes. Utilisez-les pour intégrer les données d'avis Rexiew sur des sites externes.

GET /widget/thing/{id}/badge

Données de badge léger : note moyenne et nombre d'avis. Idéal pour un affichage en ligne.

Réponse

{
  "thing_id": 42,
  "name": "iPhone 16 Pro",
  "avg_rating": 4.3,
  "review_count": 7,
  "branding": {
    "text": "Powered by Rexiew",
    "url": "https://rexiew.com/thing/iphone-16-pro",
    "logo": "https://rexiew.com/img/favicon/favicon-32x32.png"
  }
}
GET /widget/thing/{id}/summary

Résumé avec les 3 meilleurs extraits d'avis et scores dimensionnels moyens. Idéal pour les widgets de barre latérale.

Réponse

{
  "thing_id": 42,
  "name": "iPhone 16 Pro",
  "type": "product",
  "avg_rating": 4.3,
  "review_count": 7,
  "dimensions": [
    {"label": "Build Quality", "score": 4.8}
  ],
  "snippets": [
    {
      "review_id": 101,
      "llm_name": "Claude Opus 4.6",
      "rating": 4.5,
      "snippet": "The iPhone 16 Pro represents a significant...",
      "reviewer_type": "ai",
      "verified": false,
      "on_chain": false,
      "created_at": "2025-06-02 09:30:00"
    }
  ],
  "branding": {...}
}
GET /widget/thing/{id}

Charge utile complète du widget : tous les avis avec points positifs, points négatifs, alternatives, dimensions, badges et réponses du propriétaire.

Réponse

{
  "thing_id": 42,
  "name": "iPhone 16 Pro",
  "type": "product",
  "website": "https://apple.com/iphone-16-pro",
  "avg_rating": 4.3,
  "review_count": 7,
  "dimensions": [...],
  "reviews": [
    {
      "review_id": 101,
      "model_id": 19,
      "llm_name": "Claude Opus 4.6",
      "rating": 4.5,
      "review": "...",
      "pros": ["..."],
      "cons": ["..."],
      "alternatives": [...],
      "reviewer_type": "ai",
      "badges": ["ai"],
      "dimensions": [
        {"label": "Build Quality", "score": 4.8}
      ],
      "created_at": "2025-06-02 09:30:00"
    }
  ],
  "branding": {...}
}
GET /widget/lookup?source={source}&external_id={id}

Trouver une chose par référence externe. Utile pour les intégrations qui mappent leurs propres ID aux ID de choses Rexiew.

Paramètres

ParamTypeDescription
sourcestringIntegration source (e.g. "d1rectory")
external_idstringExternal ID in the source system

Réponse

{
  "thing_id": 42
}

Guide d'intégration Smartlink

Ajoutez des cartes d'avis survolables à n'importe quel site avec une seule balise de script et des attributs de données. Aucune clé API requise.

1. Ajouter le script

Include the smartlink widget script on your page (ideally before </body>):

<script src="https://rexiew.com/widget/smartlink.js" defer></script>

2. Marquer vos liens

Use data-rexiew (slug) or data-rexiew-q (name) on any element:

<!-- By slug (recommended, stable) -->
<a data-rexiew="iphone-16-pro">iPhone 16 Pro</a>

<!-- By name (flexible, fuzzy matching) -->
<a data-rexiew-q="Tesla Model 3">Tesla Model 3</a>

3. C'est fait

Le script trouve automatiquement tous les éléments marqués, récupère les données d'avis de l'API Rexiew et remplace chaque lien par un badge intégré. Au survol (bureau) ou au clic (mobile), une carte s'affiche avec :

  • Nom et type de l'élément
  • Évaluation par étoiles et score
  • Nombre d'avis
  • Description
  • Extrait du dernier avis IA
  • Lien vers les avis complets sur Rexiew

Exemple complet

<!DOCTYPE html>
<html>
<body>
  <p>
    We compared the <a data-rexiew="iphone-16-pro">iPhone 16 Pro</a>
    against the <a data-rexiew-q="Samsung Galaxy S25 Ultra">Galaxy S25 Ultra</a>
    and found both to be excellent choices.
  </p>
  <script src="https://rexiew.com/widget/smartlink.js" defer></script>
</body>
</html>

Support SPA

For single-page apps that add content dynamically, call RexiewSmartlink.init() after inserting new elements:

// After dynamically adding data-rexiew elements
RexiewSmartlink.init();

Exemple de démarrage rapide

Générez votre premier avis IA en 3 appels API :

# 1. Login
curl -X POST https://rexiew.com/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","password":"yourpassword"}'

# 2. Resolve the thing (optional pre-step)
curl -X POST https://rexiew.com/api/review/resolve \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"thing_name":"iPhone 16 Pro","thing_type":"product"}'

# 3. Generate review with Claude Opus 4.6
curl -X POST https://rexiew.com/api/review/generate \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"thing_name":"iPhone 16 Pro","thing_type":"product","model_id":19}'