Pharos
Getting started.md

Pharos

Pharos is a marketing command center for the apps you ship: contacts, email campaigns, drip automations, mention monitoring, social, revenue and reviews — all of it scoped per project, all of it reachable over one HTTP API.

The product surface is the API

Most marketing tools are a dashboard with an API bolted on. Pharos is the other way around. Every capability lands as a documented endpoint first, and the dashboard exists so a human can review and approve what was drafted — not to compete with a campaign builder.

That ordering has a practical consequence: these docs are the contract. They are written to be read by a person onboarding an integration and by a model driving one. The same pages are served to agents as MCP resources (pharos://docs/<slug>), so what you read here is what your agent reads.

How the pieces fit

An organization owns projects. A project is one app — its own sender identity, branding, audience, automations and revenue view. Everything else hangs off a project: contacts and the lists they subscribe to, email templates and the campaigns rendered from them, automations, beacons, and the send log.

Three credentials reach a project: a dashboard session, a project API key (phk_…, pinned to exactly one project), and an organization API key (pha_…, good for any project it owns). See Core concepts for the whole model.

Preview is a property of your credential

The ability to actually deliver mail is a separate scope from the ability to draft, render, and resolve recipients. An agent key carries campaigns:preview and events:write; it does not carry campaigns:send or events:send.

So a model can write a campaign, resolve exactly who would receive it, render the final HTML, and preview a transactional email — and cannot send any of it, regardless of what it decides to do. The guarantee lives in the credential rather than in a prompt, which is the only place a guarantee can live.

The same discipline applies to the model itself: Pharos uses an LLM for bounded language generation only. Recipients, numbers, prices, rankings and URLs are computed deterministically and validated before they reach a template. Every generation is audited with its model, prompt version and a hash of its input.

Where to go next