ScriptGrain API on the free plan: rate limits, quotas and what each tier adds

By Jack Stovell · published 2026-09-21 · checked 2026-09-20

A free account can mint an API key, build one voice profile, read all 45 attributes and score any text against that profile, all at 60 requests a minute. No card needed. Generating drafts is different: API generations draw on the same credits as the app, so that part needs a paid plan.

What the free plan gives an API key

Here's the thing: free isn't a trial. It's a permanent tier with real access, just scoped tighter than the paid ones. You get one voice profile, built from your own writing samples, and one writing analysis covering all 45 attributes, from claim density to sentence-length variance. No card required to get any of that.

You can connect the key to ChatGPT, Claude, or any MCP client, and the connection works the same way it would on a paid plan. The API key itself (starting `sg_live_`, generated from Settings then API) behaves identically across every tier. What changes is what the key is allowed to spend.

The free extraction is one for the lifetime of the account, not one a month. Build your profile once, read the confidence score and the attribute breakdown, and that's the free allocation used up. Scoring text against that profile, though, stays open: `POST /v1/voice-match` is free on every plan, so you can check as many pieces as you like against your one profile without it costing anything. Comparing pieces against each other, via `/v1/compare-voice`, is free too and needs no profile at all.

What you can't do on free is generate. `POST /v1/generations` deducts a credit per variant, and free accounts carry no generation credits. So the key opens the door, the profile does its job, and the moment you ask it to write something, you hit a wall. That's by design: seeing your profile is free, writing with it is paid.

Rate limits

Every plan, including Free, sits under the same request ceiling: 60 requests a minute per key. Go over it and you get a 429, `rate_limited`, and you wait for the window to reset. That ceiling isn't the only one worth knowing, though. It's a request-frequency limit, not a usage quota, and three more sit underneath it.

Profile extractions are capped at 5 an hour. Voice-match scoring, being free and lightweight, gets a much larger allowance: 200 an hour. Brand mimic requests, which need explicit consent that you own or may use the site, are capped at 3 an hour.

Read that table as two different kinds of ceiling stacked on each other. The 60-a-minute limit throttles raw traffic against your key, full stop. The hourly limits throttle specific operations regardless of how fast you're calling them. You could burn your 5 extractions in the first ten seconds of an hour and then wait fifty minutes for more, even though you're nowhere near 60 requests a minute.

Credits: what costs one and what is free

At the end of the day, ScriptGrain's credit system draws a fairly sharp line: things that produce a finished draft cost a credit, things that inform or check one don't.

Free operations include outlines, voice-match scoring, comparing two pieces, AI-detect, and reading your profile. None of those touch your credit balance, on any plan. `check_voice_match`, `compare_voice`, `ai_detect` and `save_edit` are all free MCP tools for the same reason: they're diagnostic, not generative.

Paid operations are the ones that actually produce or transform text. Generating a draft costs 1 credit per variant. Polishing text toward a target score (0.9 by default) costs 1 credit, though there's a free skip if the text already clears the bar. Humanizing works the same way: 1 credit, free skip if it passes already. Rewriting a live page costs 1 credit per 1,500 words. Brand mimic costs 1 brand-mimic credit and, again, needs explicit consent.

One detail worth sitting with: credits are deducted only after a draft is delivered. Not on request, not mid-generation. If the API times out or the generation fails, you haven't spent anything. That matters more than it sounds, especially once you're scripting batch generations and don't want a flaky connection quietly draining your balance.

If you run out mid-month, a top-up buys 40 extra generation credits for £10. That's the same rate whether you're topping up a Writer plan or an Agency one.

Plan by plan

So what does upgrading actually buy you. Not just more of the same number, mostly, but a genuinely different shape of access.

Writer, at £12 a month or £115 a year, gives you 1 profile, 40 generations a month, 2 extractions a month, 1 brand mimic a month and 5 monitored URLs. That's the entry point for anyone who wants to actually generate against their voice, not just measure it.

Operator, at £29 a month or £279 a year, triples the profile count to 3 and lifts generations to 75, extractions to 5, brand mimics to 3. Same 5 monitored URLs as Writer.

Studio, at £99 a month or £949 a year, is where team use starts making sense: 10 profiles, 400 generations, 20 extractions, 10 brand mimics, 15 monitored URLs, and 3 seats included, with extra seats at £15 a month.

Agency, at £299 a month or £2,870 a year, drops the profile cap entirely (unlimited), gives 1,500 generations, unlimited extractions, 50 brand mimics, 50 monitored URLs, and 10 seats included, extra seats at £25 a month.

Fair enough to ask: which tier fits. If you're extracting profiles more often than you're generating from them (agencies auditing client voices, say), extraction limits matter more than generation counts. If you're shipping drafts daily, the generation ceiling is the number to watch. Full detail lives on /pricing.

PlanMonthly (annual)ProfilesGenerations a monthExtractionsBrand mimicsMonitored URLsSeatsAPI and MCP
Free£0101 (lifetime)001Yes
Writer£12 (£115 a year)1402 a month151Yes
Operator£29 (£279)3755351Yes
Studio£99 (£949)104002010153 (+£15)Yes
Agency£299 (£2,870)Unlimited1,500Unlimited505010 (+£25)Yes

Idempotency and retries

Retrying a generation request shouldn't cost you twice. That's what the `Idempotency-Key` header is for on `POST /v1/generations`: send the same key with a retried request, and the API replays the original result rather than generating (and billing) again.

While a generation is still running, a repeat request with the same idempotency key returns a 409, not a duplicate result. That's the API telling you to wait rather than fire again. Once the original completes, the replay behaviour kicks in properly.

One limitation worth flagging: idempotency isn't supported with streaming. If you're streaming a generation's output as it's produced, there's no safe replay if the connection drops partway. That's a reasonable trade-off given how streaming works, but it does mean streamed generations need their own retry logic rather than leaning on the header.

For the fuller endpoint reference, including the MCP tool set and the generation loop (`create_profile`, `generate_content`, `check_voice_match`, `save_edit`), see /ai-writing-api-and-mcp-server, /reference/brand-voice-api and /reference/mcp-tool-reference.

Questions

Does the free plan ever expire or need a card?

No. Free is a permanent tier, not a trial, and no card is required to create a key or build your one profile. What's limited isn't time, it's scope: one profile, one lifetime extraction, and no generation credits. Everything diagnostic (voice-match, compare-voice, AI-detect) stays free and available for as long as the account exists.

Can I generate content on the free API tier?

Not directly. `POST /v1/generations` deducts a credit per variant, and free accounts hold no generation credits, so calls to that endpoint will fail on credits rather than access. You can still build a profile, read all 45 attributes, and score any text against it. Generating actual drafts needs a paid plan, starting at Writer.

What happens if I exceed 60 requests a minute?

You get a 429 response with the code `rate_limited`. This applies per key, on every plan including Free, and it's separate from the hourly caps on extractions, voice-match scores and brand mimics. Once the one-minute window resets, requests go through normally again. There's no separate limit override available, so pacing bursty scripts matters more than plan tier here.

When exactly are generation credits deducted?

Only after a draft is delivered successfully. A failed, timed-out or errored generation doesn't touch your balance. This applies across generation, polish, humanize and page-rewrite calls. It's a meaningful protection once you're running generations programmatically: a dropped connection or an upstream error (502) costs you nothing, only a completed draft does.

Does the Idempotency-Key header work for streamed generations?

No, streaming isn't supported with idempotency. The header works for standard `POST /v1/generations` calls, replaying a completed result safely if you retry with the same key, and returning a 409 if the original request is still running. For streamed output, you'll need your own retry handling, since there's no safe replay path if a stream drops mid-generation.

Methodology

Limits and prices read from the plan table (src/lib/plans.ts), the plan-limits module and the api-v1 function as of 2026-09-20.

Sources