---
title: "Quickstart"
description: "Create a keyword, describe your company, find mentions and mark one done. Five API calls."
canonical: https://docs.rumoro.dev/quickstart
markdown: https://docs.rumoro.dev/quickstart.mdx
---

# 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](/cli) and [MCP server](/mcp) can do the same.

## Before you start

Sign up at [app.rumoro.dev](https://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`.

```ts tab="TypeScript"
// npm install @rumoro-dev/sdk
import { createRumoro } from '@rumoro-dev/sdk';

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

```python tab="Python"
# pip install rumoro
import os
from rumoro import Rumoro

rumoro = Rumoro(api_key=os.environ["RUMORO_API_KEY"])
```

```bash tab="curl"
export RUMORO_API_KEY="ref_..."
```

More in [Authentication](/authentication).

## 1. Add a keyword

```ts tab="TypeScript"
const { data: keyword } = await rumoro.createKeyword({ body: { term: 'driftwood', kind: 'brand' } });
```

```python tab="Python"
keyword = rumoro.keywords.create(term="driftwood", kind="brand")
```

```bash tab="curl"
curl -X POST https://api.rumoro.dev/v1/keywords \
  -H "Authorization: Bearer $RUMORO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "term": "driftwood", "kind": "brand" }'
```

```json
{
  "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](/how-it-works#matching-rules). If your balance can't pay for another day of the keyword, you get `402 insufficient_balance` ([Billing](/billing)).

## 2. Describe your company

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

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

```python tab="Python"
rumoro.company.update(
    name="Driftwood", description="A feature flag service for mobile teams.", useCases=["Roll out a release to 5% of users"]
)
```

```bash tab="curl"
curl -X PATCH https://api.rumoro.dev/v1/company \
  -H "Authorization: Bearer $RUMORO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "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.

```ts tab="TypeScript"
const { data: page } = await rumoro.searchMentions({ query: { minRelevance: 60, sentiment: 'negative', limit: 20 } });
```

```python tab="Python"
page = rumoro.mentions.search(min_relevance=60, sentiment="negative", limit=20)
```

```bash tab="curl"
curl "https://api.rumoro.dev/v1/mentions?minRelevance=60&sentiment=negative&limit=20" \
  -H "Authorization: Bearer $RUMORO_API_KEY"
```

```json
{
  "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](/conventions).

## 4. Mark one done

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

```ts tab="TypeScript"
await rumoro.updateMention({ path: { id: 'mm_...' }, body: { status: 'done', note: 'Replied in the thread' } });
```

```python tab="Python"
rumoro.mentions.update("mm_...", status="done", note="Replied in the thread")
```

```bash tab="curl"
curl -X PATCH https://api.rumoro.dev/v1/mentions/mm_... \
  -H "Authorization: Bearer $RUMORO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "status": "done", "note": "Replied in the thread" }'
```

## 5. Get alerts

Instead of polling, have mentions sent to you. Use a [webhook](/webhooks) for your own code, or [Slack](/alerts/slack), [Telegram](/alerts/telegram) and email through [Alerts](/alerts).

## Next steps

<Cards>
  <Card icon="ShieldCheck" title="Authentication" description="API keys, scopes and OAuth sign-in." href="/authentication" />
  <Card icon="Workflow" title="How it works" description="How posts are collected, matched and scored." href="/how-it-works" />
  <Card icon="Package" title="SDKs" description="Typed clients for TypeScript and Python." href="/sdks" />
  <Card icon="Terminal" title="CLI" description="Every endpoint as a rumoro command." href="/cli" />
  <Card icon="Sparkles" title="MCP server" description="Your mentions as tools for AI agents." href="/mcp" />
  <Card icon="Webhook" title="Webhooks" description="Signed requests with retries." href="/webhooks" />
  <Card icon="Bell" title="Alerts" description="Slack, Telegram, email and webhooks." href="/alerts" />
  <Card icon="Code" title="API reference" description="Every endpoint." href="/api" />
</Cards>
