BETAEndpoint launching soon. Start on networkr today. Your /connect will arm viralr the moment we open.
Install

Three API calls. One key. All three surfaces live.

Point any AI agent at viralr.dev/brief.md, or run the CLI yourself. Both paths produce the same final state: a registered account, a tenant API key, and the first thread generating in the background. The same /connect also arms networkr (SEO) and outboxr (email) on the same backend. One install, three surfaces.

Agent install

Tell your AI agent

In Cursor, Claude Code, Continue, Aider, Lovable, Bolt, v0, or ChatGPT:

Read viralr.dev/brief.md and install Viralr on this site.

The brief is a machine-readable spec. Your agent follows the three-step flow, writes the tenant key to .env.local, connects the platforms you opt into, and (if you ask) arms networkr and outboxr on the same key.

CLI install

Run it yourself

From your project directory:

$ npx viralr init

Interactive: asks for domain, email, voice, connected platforms, ad opt-in, and whether to arm networkr + outboxr. Writes .env.local. Same three-step flow as the brief, wrapped.

Prefer to skip both? The manual API flow is below. What the agent or CLI is doing on your behalf.

Before you start

What you need

  • A domain you own. DNS resolves, serves public HTML, not behind an auth wall.
  • An email address.
  • At least one social account you control. Pick from X, LinkedIn, Threads, Bluesky, Mastodon, TikTok, YouTube. You can add more later.
  • Optional: ad-network account(s) if you want viralr-ads. Meta Ads, X Ads, LinkedIn Ads, TikTok Ads, Reddit Ads, Google Ads.
  • !Your site needs real content. An admission gate rejects empty, redirecting, or thin-content domains.
Manual install

Three API calls

Base URL: https://api.networkr.dev(the suite's shared backend).

1

Audit the site

POST /api/onboard
{
  "domain": "example.com",
  "email":  "user@example.com",
  "surfaces": ["viralr", "viralr-ads"]
}
Response (trimmed)
{
  "token": "<onboard_token>",
  "audit_score": 72,
  "issues": [{ "type": "critical|warning|info", "message": "..." }],
  "brand_detected":    { "accent_color": "#...", "logo_url": "..." },
  "voice_presets": [
    { "id": "professional|casual|technical|founder", "description": "..." }
  ]
}

Token is valid for 24h. Pick a voice for step 2.

2

Confirm voice and preview

POST /api/onboard/confirm
{
  "token":        "<from step 1>",
  "voice":        "technical",
  "author_name":  "Your Real Name",
  "author_bio":   "optional short bio",
  "accent_color": "#E8478B",
  "topics":       ["optional list"],
  "platforms":    ["x", "linkedin", "threads", "bluesky"]
}
Response (trimmed)
{
  "preview_url":    "/preview/<token>",
  "sample_thread": { "platform": "x", "hook": "...", "body": "...", "cta": "..." },
  "sample_linkedin": { "title": "...", "body": "..." }
}

Open https://api.networkr.dev<preview_url> to see how the first thread will land on each platform. Approve before activating.

3

Activate

POST /api/onboard/activate
{
  "token":    "<same>",
  "surfaces": ["viralr", "viralr-ads", "networkr", "outboxr"],
  "ads": { "networks": ["meta", "linkedin"], "daily_budget": 25 }
}

The surfaces array selects which parts of the suite to arm. All four on the same /api/connect is the norm. See /docs for the full surface and adapter reference.

Response (trimmed)
{
  "success":    true,
  "site_id":    "example-com",
  "network_id": "...",
  "api_key": {
    "key":    "vr_live_<32 hex>",
    "prefix": "vr_live_abcd1234",
    "notice": "Store this key now. It will never be shown again."
  },
  "armed_surfaces": ["viralr", "viralr-ads", "networkr", "outboxr"]
}
Critical

api_key.key is shown once. Save it immediately. The backend keeps only a hash.

Save the install to your repo

Write these variables to .env.local at the project root:

.env.local
VIRALR_API=https://api.networkr.dev
VIRALR_SITE_ID=<site_id from step 3>
VIRALR_KEY=<api_key.key from step 3>

Ensure .env.local is in .gitignore. Optionally drop a copy of /brief.md at .viralr/AGENT.md so future agents in the repo find the install context.

Verify the install

GET /api/sites/<site_id>/agent/brief
Authorization: Bearer <api_key.key>

Returns a 10-item checklist with statuses (ok / warning / missing), each item carrying the exact API call to fix it if needed, plus a next_step object. Includes which surfaces are armed (viralr, viralr-ads, networkr, outboxr) and which platforms are connected per surface.

Connect additional platforms later

Add a platform to a live account without re-onboarding:

POST /api/sites/<site_id>/platforms
Authorization: Bearer <key>
Content-Type: application/json

{ "platform": "tiktok" }

The response returns an OAuth redirect URL for you to approve. Once approved, the platform joins the cross-platform reshape rotation on the next scheduled thread. To disconnect: DELETE /api/sites/<site_id>/platforms/<platform>.

Hard rules

  • Never invent endpoints. Use only what this page and /docs list. Unknown routes return 404.
  • Never edit published posts. Not supported. To change a post: DELETE /api/sites/<id>/posts/<post_id> then regenerate. Social platforms penalize edits; the pipeline always generates fresh.
  • !The tenant key scopes to the account, not the surface. One key covers viralr, viralr-ads, networkr, and outboxr on the same email.
  • !Onboard token expires in 24h. On 410, restart from step 1.
  • !Respect rate limits. 429equals wait 60s, retry once. Don't loop.

Install in the terminal right now

Point your AI agent at viralr.dev/brief.md or run npx viralr init yourself. Every install converges on the same final state: socials, paid ads, SEO, and email all armed on one key.