Volver al hub de la API
Guía

Cómo usar la API

Sigue estos pasos para integrar consultas anti-cheat en tu proyecto.

Pasos rápidos

  1. 1

    Inicia sesión en FiveMExposed

  2. 2

    Crea una API key en Mis API keys

  3. 3

    Copia la key (solo se muestra una vez)

  4. 4

    Haz peticiones desde tu servidor con el header Authorization

  5. 5

    Interpreta la respuesta JSON según la referencia de datos

Si aún no tienes key, ve a Gestionar keys

Especificación OpenAPI (para scripts e IAs)

Descarga el esquema completo en JSON: métodos, headers, body y respuestas tipadas.

Pásale esta URL a tu script, bot o asistente de IA. Contiene toda la estructura que espera el backend:

https://fivemexposed.com/api/v1/openapi.json

Autenticación

Incluye tu key en cada petición (excepto /stats, que es pública):

Authorization: Bearer fme_live_tu_key_aqui
# Alternativa equivalente:
X-API-Key: fme_live_tu_key_aqui

# Formato válido de la key: fme_live_ + 32-48 caracteres [A-Za-z0-9_-]
# La key va SOLO en headers. Nunca en la URL, query params ni body (excepto bulk body con "ids").

Nunca pongas la API key en una web, Discord embed o cliente FiveM. Solo en backend, bot o script privado.

Rutas disponibles

Base URL: https://fivemexposed.com. Cada endpoint indica método HTTP, headers, parámetros y JSON de respuesta.

GETResumen rápido
https://fivemexposed.com/api/v1/lookup/discord/{id}/summary

Auth

Obligatoria — header Authorization o X-API-Key

La API key va en el header, nunca en la URL ni en query params.

Headers

  • Authorization: Bearer fme_live_TU_KEY
  • Accept: application/json

Path params

id — Discord ID numérico (17-20 dígitos). Ej: 520282435880091658

Query params

Ninguno

Response 200 (JSON)

{
  "discordId": "520282435880091658",
  "exposed": true,
  "count": 1,
  "servers": ["Servidor comunitario (Discord)"],
  "importSources": [],
  "lastSeen": "2026-07-03T15:11:49.205Z"
}

Ideal para whitelist: devuelve sí/no, count, servidores y última fecha.

GETConsulta completa
https://fivemexposed.com/api/v1/lookup/discord/{id}

Auth

Obligatoria — header Authorization o X-API-Key

La API key va en el header, nunca en la URL ni en query params.

Headers

  • Authorization: Bearer fme_live_TU_KEY
  • Accept: application/json

Path params

id — Discord ID numérico (17-20 dígitos). Ej: 520282435880091658

Query params

Ninguno

Response 200 (JSON)

{
  "discordId": "520282435880091658",
  "exposed": true,
  "count": 1,
  "records": [
    {
      "id": "uuid-interno",
      "discordName": "usuario",
      "discordId": "520282435880091658",
      "steamName": null,
      "server": "Mi servidor FiveM",
      "details": "Descripción del reporte…",
      "importSource": null,
      "sourceUrl": null,
      "hasProof": true,
      "createdAt": "2026-07-03T15:11:49.205Z"
    }
  ]
}

Lista los registros encontrados para ese Discord ID.

POSTConsulta masiva
https://fivemexposed.com/api/v1/lookup/discord/bulk

Auth

Obligatoria — plan Partner para bulk

La API key va en el header, nunca en la URL ni en query params.

Headers

  • Authorization: Bearer fme_live_TU_KEY
  • Content-Type: application/json
  • Accept: application/json

Query params

Ninguno

Body (JSON)

{
  "ids": [
    "520282435880091658",
    "987654321098765432"
  ]
}

Response 200 (JSON)

{
  "queried": 2,
  "results": {
    "520282435880091658": {
      "exposed": true,
      "count": 1,
      "records": [ … ]
    },
    "987654321098765432": {
      "exposed": false,
      "count": 0,
      "records": []
    }
  }
}

Solo Partner. Body JSON: { "ids": ["…", "…"] } hasta 50 IDs.

GETEstadísticas públicas
https://fivemexposed.com/api/v1/stats

Auth

No requerida

Headers

  • Accept: application/json

Query params

Ninguno

Response 200 (JSON)

{
  "totalApproved": 1234,
  "updatedAt": "2026-07-04T12:00:00.000Z"
}

Total de registros aprobados. No requiere API key.

Ejemplos

Consulta de resumen con curl:

curl -s -X GET \
  -H "Authorization: Bearer fme_live_TU_KEY" \
  -H "Accept: application/json" \
  "https://fivemexposed.com/api/v1/lookup/discord/520282435880091658/summary"

Bulk lookup (Partner):

curl -s -X POST \
  -H "Authorization: Bearer fme_live_TU_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"ids":["520282435880091658","987654321098765432"]}' \
  "https://fivemexposed.com/api/v1/lookup/discord/bulk"

Ejemplo en Python

Copia y adapta: sustituye fme_live_TU_KEY por tu key real. El Discord ID va en la URL (GET) o en el body ids (POST bulk).

import requests

API_KEY = "fme_live_TU_KEY"
BASE_URL = "https://fivemexposed.com"
DISCORD_ID = "520282435880091658"

# --- Resumen (GET, ideal para whitelist) ---
response = requests.get(
    f"{BASE_URL}/api/v1/lookup/discord/{DISCORD_ID}/summary",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Accept": "application/json",
    },
    timeout=15,
)

if response.status_code == 401:
    raise SystemExit(response.json().get("error", "API key inválida"))

response.raise_for_status()
data = response.json()

if data["exposed"]:
    print(f"EXPUESTO — {data['count']} registro(s) en: {', '.join(data['servers'])}")
else:
    print("No expuesto en FiveMExposed")

# --- Bulk (POST, solo Partner) ---
# bulk = requests.post(
#     f"{BASE_URL}/api/v1/lookup/discord/bulk",
#     headers={
#         "Authorization": f"Bearer {API_KEY}",
#         "Content-Type": "application/json",
#     },
#     json={"ids": [DISCORD_ID, "987654321098765432"]},
#     timeout=30,
# )
# bulk.raise_for_status()
# print(bulk.json()["results"])

Errores comunes

Todas las respuestas de error usan JSON con campo error (string):

{ "error": "Mensaje descriptivo en español" }

# 429 incluye además:
{ "error": "Límite diario de la API alcanzado.", "retryAfter": 3600 }

# 403 bulk en plan Free:
{ "error": "Bulk lookup disponible solo en plan Partner…", "upgrade": "partner" }
400Discord ID inválido, JSON mal formado o body bulk sin array ids.
401Key ausente, mal formada o revocada.
403Función no disponible en tu plan (ej. bulk en Free).
429Has superado el límite diario o por minuto.

Límites de uso

Si superas el límite recibirás error 429. Revisa los headers X-RateLimit-*.

Free

  • 100 peticiones/día
  • 10 peticiones/min
  • Sin bulk lookup

Partner

  • 10.000 peticiones/día
  • 120 peticiones/min
  • Bulk hasta 50 IDs

Headers útiles: X-RateLimit-Remaining-Day, X-RateLimit-Remaining-Minute, Retry-After.

¿Quieres saber qué significa cada campo de la respuesta?

Ver referencia de datos