# Pricing

> Plans, credit costs, the unlimited graph8-index bundle, and auto-CRM-capture for the graph8 Developer API

Source: https://docs.graph8.com/developers/pricing/

graph8 has two paid plans plus a free tier. **Both paid plans give you the same graph8-owned data for free** within a 50 rps cap — contacts, B2B index search, intent signals, website visitors. Single-record lookups (`/enrichment/lookup/person`, `/enrichment/lookup/company`) are the exception: 2 credits per lookup, charged only when a match is found. Credits only deduct when you reach for third-party providers, AI generation, outreach sends, voice minutes, or paid integrations.

> **Tip: Quick pick**
> - **Just exploring or low-volume?** Start on **PAYG** - no card, 1,000 free credits. Free contact/B2B/intent/visitor data within 50 rps; credits only deduct on AI, voice, sends, and 3rd-party enrichment.
> - **Running real GTM workflows?** **Platform** at $499/mo bundles 75,000 credits for those always-charged surfaces, same free graph8-data access.

> **Note: Mental model**
> **graph8-owned data is free on both paid plans. Third-party data, AI generation, voice minutes, outreach sends, and meeting bookings charge credits on both plans.** That's the whole pricing model.

---

## Plan Comparison

| | Free trial | PAYG | Platform |
|---|---|---|---|
| **Price** | $0 | $0.05 / credit | $499 / month |
| **Free credits on signup** | See below | 1,000 | 2,500 |
| **Card required to start** | No | No | No |
| **Included AI credits / month** | - | Pay-per-credit | 75,000 |
| **graph8-owned data (contacts, B2B search, intent, visitors; not single-record lookups)** | Metered (1 cr / record) | **Free (50 rps)** | **Free (50 rps)** |
| **Waterfall enrichment (3rd-party)** | Credits | Credits | Credits |
| **AI generation (copilot, replies, copy, drafts, landing-page chat)** | Credits (per LLM tokens) | Credits (per LLM tokens) | Drawn from 75k bundle, then $0.00666/credit |
| **Voice minutes** | 20 / min | 20 / min | Drawn from 75k bundle |
| **Meeting bookings (charged when the booking is confirmed)** | 20 each | 20 each | Drawn from 75k bundle |
| **Sequencer / campaign / newsletter sends** | Per step or recipient | Per step or recipient | Drawn from 75k bundle |
| **Auto-CRM-capture** | Off | On (default) | On (default) |
| **Rate limit** | 50 rps | 50 rps | 50 rps |
| **Work email required** | Yes | Yes | Yes |
| **Best for** | Trying graph8 | Developers, evaluators, low volume | Teams running real GTM |

> **Note: Credit value**
> Each credit is worth $0.05 on PAYG and $0.00666 on Platform overage. The Platform plan's 75,000 included credits work out to ~$3,750 in PAYG-equivalent value covering AI / voice / sends / 3rd-party enrichment. Both plans share the same free graph8-data tier (contacts, B2B, intent, visitors) within the 50 rps cap.

---

## Free Tier

Two ways to start free, both without a card:

- **PAYG signup**: 1,000 free credits, no expiration timer.
- **Platform trial**: 2,500 free credits to evaluate the full Platform experience before subscribing.

Personal email domains (gmail, yahoo, outlook, etc.) are blocked - signup requires a work email.

> **Note: Auto-capture is off on free tier**
> Free tier API calls are stateless probes - results are returned but **not** saved into your CRM. Capture turns on automatically when you upgrade to PAYG or Platform.

---

## Free on both PAYG and Platform

graph8-owned data has **no third-party COGS**, so it is free for paid orgs within the 50 rps cap on both plans.

### Contact + B2B data (graph8's 700M+ / 100M+ index)

| Endpoint | What it does |
|---|---|
| `POST /api/v1/search/contacts` | ICP contact search across 700M+ records |
| `POST /api/v1/search/companies` | ICP company search across 100M+ records |
| `POST /api/v1/search/contacts/save`, `/search/companies/save` | Save matching records to a list |

### Your CRM (first-party data)

| Endpoint | What it does |
|---|---|
| `GET/POST/PATCH/DELETE /api/v1/contacts` | Full contact CRUD |
| `GET/POST/PATCH/DELETE /api/v1/companies` | Full company CRUD |
| `GET/POST/PATCH/DELETE /api/v1/lists` | Manage lists |
| `GET/POST/PATCH/DELETE /api/v1/deals` | Manage deals |
| `GET/POST/PATCH/DELETE /api/v1/tasks`, `/notes`, `/fields`, `/quotes` | Tasks, notes, custom fields, quotes (metadata) |

### Intent + website-visitor signals

| Endpoint | What it does |
|---|---|
| `GET /api/v1/intent/stats` | Org-level intent rollups |
| `POST /api/v1/intent/keywords/list` | Tracked keyword groups |
| `POST /api/v1/intent/pages/visitors` | Visitor records for a page URL |
| `POST /api/v1/intent/pages/contacts` | Contacts that visited a page |
| `POST /api/v1/intent/keywords/{id}/companies\|contacts\|urls` | Per-keyword aggregations |
| `GET /api/v1/public/visitors/score`, `/visitors/company` | Anonymous-visitor IP resolution |
| `POST /api/v1/public/signals/company` | Aggregate company-level intent score |

### Workflow / Studio / webhook plumbing

| Endpoint | What it does |
|---|---|
| Workflow / skill / pipeline / landing-page CRUD | Metadata management (execution charges separately — see below) |
| Studio reads (ICPs, personas, brand brief, intelligence, research reports) | Read-only context for AI generation |
| Webhook subscription mgmt + delivery | Configure + receive event callbacks |
| Calendar widget load, slot lookup (`g8.calendar.slots`) | Browse availability without booking (booking confirmation charges — see below) |

> **Tip: Why "free within 50 rps"**
> The 50 rps cap is per-org and applies to all data API endpoints. There is **no monthly cap** on the graph8-data endpoints listed above for either paid plan — if you stay under 50 rps you can search and read intent/visitor data as much as you want. The cap exists to keep the platform stable, not to meter usage.

> **Caution: Coming soon**
> LinkedIn-keyed lookup endpoints (`POST /api/v1/linkedin/person`, `POST /api/v1/linkedin/company`) are not yet exposed on the public Developer API. Use `/enrichment/lookup/person` with a `linkedin_url` in the meantime.

> **Note: Backend implementation note**
> The per-call constants in [`developer_api/constants.py`](https://github.com/graph8-com/g8/blob/main/developer_api/constants.py) are what the Developer API charges today: `CREDITS_PERSON_LOOKUP = 2`, `CREDITS_COMPANY_LOOKUP = 2`, `CREDITS_EMAIL_VERIFY = 1`. A lookup is charged only when it finds a match; one that finds nothing costs 0. PAYG orgs always pay these rates.

---

## What consumes credits

These call out to third-party providers, send real messages, run AI, or trigger paid services. They consume credits on **both** PAYG and Platform - the only difference is whether they draw from your pay-per-credit balance (PAYG) or your 75,000-credit monthly bundle (Platform).

| Action | Credits | Where |
|---|---|---|
| Person or company lookup | 2 per lookup, charged only when a match is found | `POST /api/v1/enrichment/lookup/person`, `/lookup/company` |
| Email verify | 1 per verify | `POST /api/v1/enrichment/verify-email` |
| Waterfall enrichment (1 contact) | 0.5-20 per provider hit (typically 1-3) | `POST /api/v1/enrichment/enrich` — full per-provider matrix in [Enrichment](https://docs.graph8.com/developers/enrichment/#waterfall-credit-matrix) |
| Copilot turn (chat message) | Per LLM tokens (~1 per 1,000) | `g8.copilot.ask()`, Studio Copilot, `/api/v1/public/copilot/chat` |
| AI inbox draft | Per LLM tokens | `POST /api/v1/inbox/{id}/draft` |
| AI generation — copy, brief, brand kit, intelligence | Per LLM tokens | Studio generation tasks |
| Landing-page chat edit | Per LLM tokens | `POST /api/v1/pages/{id}/chat` |
| Skill execute (`type=llm`) | Per LLM tokens | `POST /api/v1/skills/{id}/execute` |
| Voice AI minute | 20 | Voice / dialer (call audio) |
| **Meeting booked** (charged when the booking is confirmed) | 20 | `POST /appointments/bookings`, or `POST /appointments/bookings/{booking_uid}/confirm` for a booking that needs host approval. Once per booking: reschedules are free, rejections are never charged, cancels are not refunded. Calendar widget load + slot lookup are free |
| Process 1 intent signal | 1 | Intent processing (background) |
| Event stream ingest at scale | 1 per 10 events | Tracking / CDP |
| Campaign step / sequence send [^seq-charge] | 1 per step | `/campaigns/launch`, sequencer engagement sends |
| Newsletter send | 1 per recipient | Newsletter / nurture campaigns |
| Connected LinkedIn account | Billed per connected LinkedIn account every 30 days at the rate shown on your billing page | Each LinkedIn account connected for sequences, inbox and publishing |
| Bulk email verification (internal) | 1 per email | `POST /api/v1/contacts/verify-emails` |
| Waterfall email verification step (ZeroBounce) | 2 per row it checks, not added on top of the row's dearest step | `email_verification` on a waterfall pipeline |
| Skill execute (`type=api`) | Free (graph8-side) | Third-party HTTP may charge |
| Audience-sync push | Per-record where the destination platform meters | `/audience-syncs/{id}/trigger` |

Storing contacts and companies in your CRM is **free**. Credits only apply when data is enriched via third parties, used in outreach, processed by AI (copilot, drafts, generation), or pushed to a metered destination.

> **Caution: Sequencer charge timing — confirmation pending**
> The "1 credit per campaign step / sequence send" rate is the published marketing rate. As of this page revision, an internal code audit could not pinpoint whether the charge fires per send or once at campaign launch. Treat the per-step rate as authoritative for planning; we will update this row if the audit lands a different conclusion.

[^seq-charge]: See the caution note above — per-step vs per-launch charge timing is being confirmed by the backend team.

---

## PAYG (Pay-as-you-go)

The entry tier. Every feature is available - no feature walls.

- **$0.05 per credit**, billed against your balance
- **1,000 free credits** on signup, no card
- **Full platform access** - search, enrichment, sequences, campaigns, copilot, intent, ads, voice, landing pages
- **Free graph8-owned data within 50 rps** — contact CRM, B2B index search, intent + visitor signals — same as Platform (single-record lookups cost 2 credits each)
- **Auto-CRM-capture is on** - every contact or company returned by the API is saved into your CRM
- **50 requests/second** on data API endpoints

Best for: developers, evaluators, scripts, low-volume integrations.

---

## Platform - $499/month

For teams running real GTM workflows on graph8.

- **2,500 free credits on signup** to trial before subscribing (no card)
- **75,000 credits per month included** for AI generation, voice minutes, meeting bookings, waterfall enrichment, and outreach sends
- **Free graph8-owned data within 50 rps** — contact CRM, B2B index search, intent + visitor signals — same as PAYG (single-record lookups cost 2 credits each)
- **Additional credits at $0.00666 each** beyond the 75,000 included
- **Auto-CRM-capture is on** - every API result lands in your CRM as a permanent record
- Full access to sequences, campaigns, copilot, intent, ads, voice, and landing pages

---

## Auto-CRM-Capture

Every contact and company returned by the API is automatically saved into your CRM. The next time you query `GET /contacts` or open the Contacts grid in the app, it's there.

### Defaults by plan

| Plan | Capture default |
|---|---|
| Free trial | Off |
| PAYG | On |
| Platform | On |

### How captured records appear

Captured records are tagged so you can find and audit them:

- `source = 'api_lookup'`
- `created_via = 'api'`
- `api_endpoint` records which endpoint produced the record
- `last_api_touched_at` updates on each subsequent lookup

A second lookup of the same person updates `last_api_touched_at` rather than creating a duplicate. Dedup is per-org against the canonical `MashupContact` / `MashupCompany`.

### Opting out

You can disable capture at three levels:

1. **Per call** - append `?capture=false` to a GET, or pass `"capture": false` in the JSON body of a POST.
2. **Per API key** - configure the key with capture disabled in **Settings → API**.
3. **Org-wide** - toggle `auto_capture_enabled` off in **Settings → API**.

```bash
# Per-call opt-out via query string
curl "https://be.graph8.com/api/v1/enrichment/lookup/person?capture=false" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane@acme.com"}'

# Per-call opt-out via JSON body (POST)
curl -X POST "https://be.graph8.com/api/v1/enrichment/lookup/person" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane@acme.com", "capture": false}'
```

> **Caution: Coming soon**
> Auto-CRM-capture is approved and rolling out. The capture flag, the per-key setting, and the org-wide toggle are documented here so you can plan against them, but they are not yet wired into every endpoint. Until rollout is complete, treat lookup and search results as read-only and use [`/search/contacts/save`](https://docs.graph8.com/developers/search/#save-contacts-to-list) to persist records explicitly.

### Cost of capture

Capture is bundled into the same request — there is no double-charge. On **both plans**, index-backed searches are free within the 50 rps cap, and capture adds nothing to a lookup's own price (2 credits per lookup, charged only when a match is found). Waterfall enrichment, AI drafts, voice minutes, meeting bookings, and message sends consume credits on both plans as documented above.

---

## Rate Limits

All data API endpoints enforce **50 requests/second + 1,000 requests/minute per org**, on both PAYG and Platform.

- The cap is the same on both plans.
- On **both PAYG and Platform**, there is **no monthly cap** on graph8-owned data endpoints (contacts, B2B index, intent, visitors) — free within the 50 rps cap.
- Exceeding the cap returns `429 Too Many Requests` with a `Retry-After` header.

See [Rate Limits](https://docs.graph8.com/developers/rate-limits/) for retry strategies and headers.

---

## FAQ

### Do I need a credit card to start?
No. Both PAYG (1,000 free credits) and the Platform trial (2,500 free credits) start without a card.

### Why is a work email required?
graph8 is B2B - we use the work email domain to scope your org and prevent abuse. Personal email providers (gmail, yahoo, outlook, etc.) are blocked at signup.

### Is graph8-owned data really free on both plans?
Yes, within the 50 rps cap. Contacts CRM, B2B index search, intent signals, and website-visitor data all hit graph8-owned infrastructure with no third-party COGS — both PAYG and Platform get unlimited access within the rate cap. There is no monthly volume limit on these endpoints. The 50 rps cap exists to keep the platform stable, not to meter usage.

### So what's actually different between PAYG and Platform?
Only the always-charged surfaces (AI generation, voice minutes, meeting bookings, outreach sends, waterfall enrichment through 3rd-party providers). PAYG bills $0.05 / credit against your balance as you go; Platform bundles 75,000 of those credits into the $499 monthly fee and prices any overage at $0.00666 / credit. **Free graph8-data access is identical on both plans.**

### What counts as a "third-party" enrichment call?
Anything under `POST /enrichment/enrich` that runs the waterfall through an external provider (Prospeo, Dropcontact, Cognism, Apollo, Hunter, Kickbox, ZeroBounce, and others). The waterfall consumes credits on both plans because graph8 pays the provider per record. Single-record `lookup/person` and `lookup/company` also cost credits on both plans: **2 credits per lookup, charged only when a match is found**.

### What happens to my saved data if I downgrade?
Your CRM data stays. Captured records remain in your workspace regardless of plan. You only lose the ability to make new credit-consuming calls if your balance hits zero on PAYG.

### Can I switch between PAYG and Platform?
Yes. Switching to Platform is instant. Switching from Platform back to PAYG takes effect at the end of your billing cycle.

### Are MCP and CLI calls billed the same way?
Yes. The [MCP server](https://docs.graph8.com/developers/mcp/) and [CLI](https://docs.graph8.com/developers/cli/) call the same Developer API under the hood — the same credit costs, rate limits, and per-plan rules apply (index search is free within 50 rps on both paid plans; single-record lookups cost 2 credits each, charged only when a match is found).

---

## What's next

- **[Authentication](https://docs.graph8.com/developers/authentication/)** - create an API key
- **[Rate Limits](https://docs.graph8.com/developers/rate-limits/)** - retry headers and backoff
- **[Search](https://docs.graph8.com/developers/search/)** - the index-backed search endpoints
- **[Enrichment](https://docs.graph8.com/developers/enrichment/)** - lookup vs. waterfall, in detail
