Express Briefs API

Captions for every platform, from one request.

Send a few details about a property, vehicle, product or event. Get back ready-to-post copy for Instagram, WhatsApp, TikTok, Facebook and more, as clean JSON you can drop straight into your own product.

Get an API keyRead the reference

    
Response

  

Your API keys

Create a key for each site or app that uses the API, so you can revoke one without breaking the others.

Loading…

Plans and billing

API plans are separate from your Express Briefs website plan. Each has its own monthly generations, so heavy API use never uses up what you have for the website, and the other way round.

Loading plans…

Each successful request uses one generation, however many platforms it asks for. Failed and invalid requests are free. Your count resets on the first of each month (UTC).

Upgrading takes effect immediately for every key you already have, with nothing to change in your code. The requests-per-minute figure is per key. Payments are processed by Bachs.

Authentication

Send your key in the Authorization header. The X-API-Key header works too.

Authorization: Bearer eb_live_YOUR_KEY
Call the API from your server, not the browser. A key placed in front-end JavaScript is visible to every visitor, and anyone can copy it and spend your monthly generations. Have your own backend make the request and pass the result to your page.

Treat keys like passwords. We only store a fingerprint of each key, so if you lose one we can't show it again. Create a new key and revoke the old one.

POST/api/v1/generate

Generates a full description plus a caption for each platform you ask for, and three headline options.

FieldTypeDescription
industry requiredstringThe type of business: real-estate, automotive, ecommerce, restaurants, fitness, recruitment, events, local-services, hospitality, fashion-resale or wedding-vendors.
fields requiredobjectThe details to write about. The keys depend on the industry, so use the field explorer below.
platforms requiredstring[]One or more of WhatsApp, Instagram, Facebook, Twitter, LinkedIn, TikTok, Snapchat, Reddit, Quora. Not case-sensitive.
tonestringProfessional (default), Casual, Urgent, Luxury, Friendly or Bold.
featuresstring[]Up to 20 short selling points, such as "24/7 Security".
extrastringAnything else worth mentioning, up to 1,000 characters.

Response

FieldDescription
captionsAn object with one entry per section: full_listing, one key per platform you requested (lowercase, such as instagram), and headlines, which is an array of strings.
rawThe unparsed text we received. Use it as a fallback if a section is ever missing from captions.
truncatedtrue if the output hit its length limit and later sections may be cut off. Ask for fewer platforms per request and make a second call for the rest.
usageGenerations used this month, your monthly limit, your plan, and when the count resets.

Each successful request uses one generation from your API plan, however many platforms you ask for. Failed and invalid requests are free.

Industries and fields

Each industry has its own fields. Pick one to see the keys it expects and the values its dropdowns offer on the website. The same data is available from GET /api/v1/industries/{slug}, without a key, if you'd rather build your form from it.

GET/api/v1/usage

Returns your API plan and how many generations you have used this month. Handy for alerting yourself before you run out.

{
  "plan": "builder",
  "used": 12,
  "limit": 300,
  "rate_limit_per_min": 30,
  "resets_at": "2026-10-01T00:00:00.000Z"
}

Errors

Errors always look like this, so you can branch on code rather than reading the message:

{ "error": { "code": "invalid_request", "message": "\"platforms\" must be a non-empty array. Valid values: WhatsApp, Instagram, …" } }
StatusCodeWhat to do
400invalid_requestSomething in the request is wrong or missing. The message says which part.
401missing_api_keyNo key was sent. Add the Authorization header.
401invalid_api_keyThe key is mistyped or has been revoked. Create a new one above.
429limit_reachedYou have used all of this month's generations on your API plan. The response includes upgrade_url. Upgrade, or wait for the monthly reset.
429rate_limitedMore requests per minute than your plan allows for one key. Wait a moment and retry, or upgrade for a higher limit.
500generation_failedThe AI didn't return a result. Retry. Nothing was counted against your quota.
503service_unavailableTemporary problem on our side. Retry shortly.