Documentação da API

A API Rexiew permite pesquisar, ler avaliações, gerar avaliações por IA, enviar avaliações humanas e incorporar widgets de avaliação em qualquer site. Todas as respostas são em JSON.

URL Base

https://rexiew.com/api

Todos os endpoints são relativos a esta URL base.

Autenticação

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.

Tratamento de Erros

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

Endpoints Públicos

Nenhuma autenticação necessária.

GET /health

Verifique se a API está em execução.

Resposta

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

Liste todos os modelos LLM com requisitos de tier e status ativo. Se autenticado, inclui se cada modelo está acessível para seu tier de assinatura.

Resposta

{
  "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}

Obtenha detalhes de um produto e todas as suas avaliações.

Resposta

{
  "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}

Obtenha detalhes completos da avaliação, incluindo prós, contras, alternativas, pontuações dimensionais e status de verificação on-chain.

Resposta

{
  "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

Verifique a prova on-chain de uma avaliação humana assinada via Provifier.

Resposta

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

Endpoints Autenticados

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

POST /auth/login

Autentique com email e senha. Retorna tokens JWT de acesso e atualização.

Corpo da Requisição

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

Resposta

{
  "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

Crie uma nova conta. A senha deve ter pelo menos 10 caracteres.

Corpo da Requisição

{
  "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

Troque um token de atualização válido por novos tokens de acesso e atualização.

Corpo da Requisição

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

Resposta

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

Etapa anterior à geração de uma análise. Resolve a entrada do usuário para uma coisa existente no banco de dados ou sugere criar uma nova. Usa um modelo de IA internamente para correspondência.

Corpo da Requisição

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

Resposta

{
  "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).

Corpo da Requisição

{
  "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

Envie uma avaliação escrita por humanos. Limitado a 1 por produto por usuário por dia. Opcionalmente inclua um endereço de carteira para verificação Blockinity.

Corpo da Requisição

{
  "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

Anexe dados de assinatura on-chain do Provifier a uma avaliação humana que você possui. Torna a avaliação criptograficamente verificável.

Corpo da Requisição

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

Resposta

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

Obtenha o histórico de avaliações do usuário autenticado, paginado.

Parâmetros

ParamTypeDefaultDescription
pageint1Page number
limitint20Results per page (max 50)

Resposta

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

Obtenha o perfil do usuário autenticado, saldo de créditos e informações de assinatura.

Resposta

{
  "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
  }
}

Endpoints de Widget

Público, sem autenticação necessária. As respostas são armazenadas em cache por 5 minutos. Use para incorporar dados de análises Rexiew em sites externos.

GET /widget/thing/{id}/badge

Dados de crachá leve: classificação média e contagem de avaliações. Ideal para exibição inline.

Resposta

{
  "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

Resumo com os 3 principais trechos de avaliações e pontuações dimensionais médias. Ideal para widgets de barra lateral.

Resposta

{
  "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}

Carga útil completa do widget: todas as avaliações com pontos positivos, negativos, alternativas, dimensões, emblemas e respostas do proprietário.

Resposta

{
  "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}

Encontre algo por referência externa. Útil para integrações que mapeiam seus próprios IDs para IDs de coisas Rexiew.

Parâmetros

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

Resposta

{
  "thing_id": 42
}

Guia de incorporação Smartlink

Adicione cartões de análise interativos a qualquer site com uma única tag de script e atributos de dados. Nenhuma chave de API necessária.

1. Adicione o script

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

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

2. Marque seus links

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. Pronto

O script encontra automaticamente todos os elementos marcados, busca dados de avaliação da API Rexiew e substitui cada link por um selo inline. Ao passar o mouse (desktop) ou clicar (celular), um card aparece mostrando:

  • Nome e tipo do produto
  • Classificação por estrelas e pontuação
  • Contagem de avaliações
  • Descrição
  • Trecho da avaliação de IA mais recente
  • Link para análises completas no Rexiew

Exemplo completo

<!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>

Suporte para SPA

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

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

Exemplo de Início Rápido

Gere sua primeira avaliação de IA em 3 chamadas de 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}'