OverviewPlatformsAPI Reference

Quickstart

Create a keyword, describe your company, find mentions and mark one done. Five API calls.


Rumoro finds your keywords on X, Bluesky, Hacker News, Reddit, GitHub, Stack Overflow, DEV, YouTube, LinkedIn, TikTok, Instagram, in the news and in reviews, and scores each mention. Each example comes in TypeScript, Python and curl. The CLI and MCP server can do the same.

Before you start

Sign up at app.rumoro.dev. You get $5.80 of credit and don't need a card. Create a key on the API keys page and copy it, because it is shown only once. The API is at https://api.rumoro.dev/v1. Every request needs the key, except /v1/health and /v1/openapi.json. The examples read it from RUMORO_API_KEY.

// npm install @rumoro-dev/sdk
import { createRumoro } from '@rumoro-dev/sdk';

const rumoro = createRumoro({ apiKey: process.env.RUMORO_API_KEY! });

More in Authentication.

1. Add a keyword

const { data: keyword } = await rumoro.createKeyword({ body: { term: 'driftwood', kind: 'brand' } });
{
  "id": "kw_3b8f2c71d94e4a06a5e19c2f7d6b0e48",
  "term": "driftwood",
  "kind": "brand",
  "muted": false,
  "platforms": null,
  "context": null,
  "matching": { "requiredTerms": [], "requiredMode": "any", "excludedTerms": [], "excludedAuthors": [], "caseSensitive": false },
  "createdAt": "2026-10-04T08:21:37.512Z"
}

This response is shortened. kind can be brand (the default), competitor or topic. platforms: null searches every platform. If your term is a common word, add matching rules, such as words the post must also contain or words that rule it out, and a context sentence. See How it works. If your balance can't pay for another day of the keyword, you get 402 insufficient_balance (Billing).

2. Describe your company

Rumoro scores relevance against your company profile, so this step improves results more than any other.

await rumoro.updateCompany({
  body: { name: 'Driftwood', description: 'A feature flag service for mobile teams.', useCases: ['Roll out a release to 5% of users'] },
});

The classifier reads a context that Rumoro builds from the profile. To write that text yourself, send context.

3. Find mentions

Mentions appear as each platform is checked.

const { data: page } = await rumoro.searchMentions({ query: { minRelevance: 60, sentiment: 'negative', limit: 20 } });
{
  "data": [
    {
      "id": "mm_...",
      "status": "open",
      "relevant": true,
      "keyword": { "id": "kw_...", "term": "driftwood" },
      "post": { "platform": "reddit", "url": "https://www.reddit.com/r/...", "text": "..." },
      "author": { "name": "...", "followers": null },
      "classification": { "relevance": 78, "sentiment": "negative", "intents": ["bug_report"], "note": "..." },
      "createdAt": "2026-10-04T07:55:10.000Z"
    }
  ],
  "nextCursor": null
}

This response is shortened. The newest mentions come first. To get the next page, send nextCursor as cursor, and stop when it is null. See Conventions.

4. Mark one done

Mentions marked done or ignored are not sent in new alerts.

await rumoro.updateMention({ path: { id: 'mm_...' }, body: { status: 'done', note: 'Replied in the thread' } });

5. Get alerts

Instead of polling, have mentions sent to you. Use a webhook for your own code, or Slack, Telegram and email through Alerts.

Next steps

Was this page helpful?

On this page