Reputory.ai API

Programmatic access to your reputation data, mentions, alerts, and scores.

Base URL: https://app.reputory.ai/api/v1

Authentication

All API requests require a Bearer token in the Authorization header. Generate API keys from Settings → API Keys.

Header format

Authorization: Bearer rep_a1b2c3d4e5f6...
Important: Your full API key is shown only once at creation time. Store it securely. If lost, revoke and create a new key.

Rate Limits

The API is rate-limited to 100 requests per minute per IP address.

Rate limit headers are included in every response:

  • X-RateLimit-Limit — Max requests per window
  • X-RateLimit-Remaining — Requests remaining
  • X-RateLimit-Reset — Unix timestamp when the window resets

Exceeding the limit returns 429 Too Many Requests.

Response Format

All endpoints return a consistent JSON envelope:

{
  "data": [ ... ],
  "meta": {
    "total": 142,
    "limit": 50,
    "offset": 0,
    "page": 1
  }
}

Error responses use: { "error": "message" }

Endpoints

GET/api/v1/mentions

Retrieve paginated brand mentions across all monitored sources.

Query Parameters

NameTypeDescription
limitnumberResults per page (1-100, default 50)
offsetnumberNumber of results to skip (default 0)
sentimentstringFilter: POSITIVE, NEGATIVE, NEUTRAL, or MIXED
sourcestringFilter: NEWS, SOCIAL, REVIEW, REDDIT, HACKERNEWS, SERP

Example Response

{
  "data": [
    {
      "id": "clx...",
      "title": "Company mentioned in TechCrunch",
      "url": "https://techcrunch.com/...",
      "source": "NEWS",
      "sentiment": "POSITIVE",
      "author": "John Doe",
      "reach": 45000,
      "publishedAt": "2025-01-15T09:30:00.000Z",
      "keyword": "Acme Corp"
    }
  ],
  "meta": { "total": 142, "limit": 50, "offset": 0, "page": 1 }
}
GET/api/v1/score

Get the current reputation score and up to 30 historical data points.

Example Response

{
  "data": {
    "current": {
      "score": 78,
      "sentiment": 82,
      "visibility": 71,
      "consistency": 80,
      "calculatedAt": "2025-01-15T00:00:00.000Z"
    },
    "history": [
      { "score": 75, "sentiment": 80, "visibility": 68, "consistency": 77, "calculatedAt": "2025-01-01T00:00:00.000Z" }
    ]
  },
  "meta": { "total": 15 }
}
GET/api/v1/alerts

Retrieve recent reputation alerts and threat notifications.

Query Parameters

NameTypeDescription
limitnumberResults per page (1-100, default 50)
offsetnumberNumber of results to skip (default 0)

Example Response

{
  "data": [
    {
      "id": "clx...",
      "type": "SPIKE",
      "severity": "HIGH",
      "title": "Negative mention spike detected",
      "message": "15 negative mentions in the last hour",
      "acknowledged": false,
      "createdAt": "2025-01-15T10:00:00.000Z"
    }
  ],
  "meta": { "total": 8, "limit": 50, "offset": 0, "page": 1 }
}
GET/api/v1/keywords

List all tracked keywords and brand terms.

Example Response

{
  "data": [
    {
      "id": "clx...",
      "term": "Acme Corp",
      "type": "BRAND",
      "active": true,
      "createdAt": "2025-01-01T00:00:00.000Z"
    }
  ],
  "meta": { "total": 5 }
}

Code Examples

cURL

curl -H "Authorization: Bearer rep_a1b2c3d4e5f67890abcdef1234567890" \
  "https://app.reputory.ai/api/v1/mentions?limit=10&sentiment=NEGATIVE"

JavaScript (fetch)

const response = await fetch(
  "https://app.reputory.ai/api/v1/mentions?limit=10",
  {
    headers: {
      "Authorization": "Bearer rep_a1b2c3d4e5f67890abcdef1234567890",
    },
  }
);

const { data, meta } = await response.json();
console.log(`Found ${meta.total} mentions`);
data.forEach((m) => console.log(m.title, m.sentiment));

Python (requests)

import requests

headers = {"Authorization": "Bearer rep_a1b2c3d4e5f67890abcdef1234567890"}
r = requests.get("https://app.reputory.ai/api/v1/score", headers=headers)
data = r.json()

print(f"Current score: {data['data']['current']['score']}")

Error Codes

CodeDescription
401Missing or invalid API key
403API key deactivated or expired
429Rate limit exceeded (100 req/min)
500Internal server error