Getting started
Everything the Pyromanic app can do is available over HTTP. The app is one client
of this API, not a privileged one — anything you can do by clicking, you can do here,
and anything here works from a script, a CI job, or an AI tool.
Start by finding the company your key is scoped to. Every other path needs its id,
and this saves you pasting one:
curl https://api.pyromanic.com/v1/companies \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
Authentication
Send a secret key as a bearer token. Keys are scoped to a single company, so the
key decides what you can reach — a company id in a path is checked against it, never
trusted over it.
| Prefix | Kind | Where it lives |
sk_live_… | Secret | Your server. Never a browser. |
pk_live_… | Publishable | Ships in page source. Reads published content only. |
Publishable keys are refused by this API entirely. They exist for the delivery API,
which serves your public roadmap to anonymous visitors. The distinction matters:
a publishable key that could write anything meaningful would be a secret key that
you had pasted into your HTML.
Keys are prefixed so a leak is findable — secret scanners and log scrubbers can
recognise sk_live_, where an opaque UUID looks like any other UUID.
Rotate by issuing a new key, moving your integration across, then revoking the old
one; both work until the old key's expiry, because rotation that needs downtime
does not get done.
MCP
Every endpoint on this page is also an MCP tool, generated from the same definition —
so an AI client sees the same surface as an HTTP one, and neither can drift from the
other. Point a client at:
https://api.pyromanic.com/mcp
Authenticate with the same secret key as a bearer token. Tools are named
pyromanic_<operation> — pyromanic_list_plan_items,
pyromanic_create_plan_item — and carry the same scope requirements as the
endpoints they mirror. A key that cannot write over HTTP cannot write through a tool call.
Tool arguments are flat: path, query and body fields go in one object, and are routed to
the right part of the request for you.
Errors
Every failure returns the same envelope, with a stable code. Branch on
the code — messages get reworded, and matching on prose will break.
{ "errors": [ { "code": "not_found", "message": "No such record." } ] }
| Code | Status | Meaning |
bad_request | 400 | The request did not validate. The message names the field. |
unauthorised | 401 | Missing key, unknown key, revoked key, or a scope you do not hold. |
not_found | 404 | No such record — or one your key cannot reach. The two are deliberately indistinguishable. |
method_not_allowed | 405 | Right path, wrong verb. The Allow header lists what works. |
rate_limited | 429 | Slow down. Retry-After says how long. |
internal | 500 | Our fault. Safe to retry. |
Versioning
Additive changes — a new field, a new endpoint — ship without notice, so write clients
that ignore fields they do not recognise. Anything breaking gets a new dated version,
and your integration keeps working until you choose to move.
Pyromanic-Version: 2026-08-11
The current version is returned on every response. The machine-readable description of
everything on this page is at /openapi.json — point a client
generator at it rather than writing request code by hand.
Companies
GET
/v1/companies
company:read
List the companies this key can act on.
A key is scoped to a single company, so this returns exactly one. Use it to discover the id for every other endpoint rather than hard-coding one.
Returns
Example
curl https://api.pyromanic.com/v1/companies \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}
company:read
Fetch a company.
The company your key is scoped to. Any other id returns 404.
Path parameters
Returns
id |
string |
|
name |
stringnullable |
Display name. |
slug |
stringnullable |
|
summary |
stringnullable |
One or two sentences describing the product. |
websiteUrl |
stringnullable |
|
repositoryUrl |
stringnullable |
|
industry |
stringnullable |
|
stage |
stringnullable |
idea | mvp | growth | scale |
teamSize |
stringnullable |
|
targetMarket |
stringnullable |
b2b | b2c | b2b2c |
primaryLanguage |
stringnullable |
ISO 639-1, e.g. "en". |
timezone |
stringnullable |
IANA name, e.g. "Australia/Melbourne". |
emailDomain |
stringnullable |
|
onboardingStatus |
stringnullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl https://api.pyromanic.com/v1/companies/{companyId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
PATCH
/v1/companies/{companyId}
company:write
Update a company.
Path parameters
Body
name |
string |
|
summary |
string |
|
websiteUrl |
string |
|
repositoryUrl |
string |
|
industry |
string |
|
stage |
string |
|
targetMarket |
string |
|
primaryLanguage |
string |
|
timezone |
string |
|
Returns
id |
string |
|
name |
stringnullable |
Display name. |
slug |
stringnullable |
|
summary |
stringnullable |
One or two sentences describing the product. |
websiteUrl |
stringnullable |
|
repositoryUrl |
stringnullable |
|
industry |
stringnullable |
|
stage |
stringnullable |
idea | mvp | growth | scale |
teamSize |
stringnullable |
|
targetMarket |
stringnullable |
b2b | b2c | b2b2c |
primaryLanguage |
stringnullable |
ISO 639-1, e.g. "en". |
timezone |
stringnullable |
IANA name, e.g. "Australia/Melbourne". |
emailDomain |
stringnullable |
|
onboardingStatus |
stringnullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl -X PATCH https://api.pyromanic.com/v1/companies/{companyId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"…","summary":"…"}'
Plan
GET
/v1/companies/{companyId}/plan/boards
plan:read
List roadmap boards.
Path parameters
Query parameters
limit | integer |
requireddefault 25 |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/plan/boards \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}/plan/boards/{boardId}
plan:read
Fetch one roadmap board.
Path parameters
companyId | string |
required |
boardId | string |
required |
Returns
id |
string |
|
companyId |
string |
|
name |
stringnullable |
|
publicKey |
stringnullable |
Publishable. Selects this board for the delivery API; authorises nothing. |
allowedOrigins |
arraynullable |
Domains permitted to submit feedback. Empty admits any origin. |
publishedVersion |
numbernullable |
|
publishedAt |
stringnullable |
|
active |
booleannullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/plan/boards/{boardId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}/plan/boards/{boardId}/items
plan:read
List items on a board.
Includes drafts. This is the authoring view, not what visitors see.
Path parameters
companyId | string |
required |
boardId | string |
required |
Query parameters
limit | integer |
requireddefault 50 |
status | string |
draft · in_review · published · archived |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/plan/boards/{boardId}/items \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
POST
/v1/companies/{companyId}/plan/boards/{boardId}/items
plan:write
Add an item to a board.
Created as a draft unless a status is given. Nothing becomes visible until you publish.
Path parameters
companyId | string |
required |
boardId | string |
required |
Body
title |
string |
required |
summary |
string |
|
slug |
string |
Derived from the title when omitted. Frozen afterwards — links depend on it. |
columnId |
string |
|
categoryIds |
array |
|
status |
string |
required |
sortOrder |
integer |
|
targetLabel |
string |
|
Returns
id |
string |
|
roadmapId |
string |
|
companyId |
string |
|
slug |
string |
Stable public identifier. Frozen after creation. |
title |
string |
|
summary |
stringnullable |
|
columnId |
stringnullable |
Which column it sits in on the public board. |
categoryIds |
arraynullable |
|
status |
stringnullable |
draft | in_review | published | archived. Editorial only — never leaves this API. |
sortOrder |
numbernullable |
|
targetLabel |
stringnullable |
Free text, e.g. "Q3" — deliberately not a date. |
publishedVersion |
numbernullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl -X POST https://api.pyromanic.com/v1/companies/{companyId}/plan/boards/{boardId}/items \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"…","summary":"…"}'
GET
/v1/companies/{companyId}/plan/items/{itemId}
plan:read
Fetch one item.
Path parameters
companyId | string |
required |
itemId | string |
required |
Returns
id |
string |
|
roadmapId |
string |
|
companyId |
string |
|
slug |
string |
Stable public identifier. Frozen after creation. |
title |
string |
|
summary |
stringnullable |
|
columnId |
stringnullable |
Which column it sits in on the public board. |
categoryIds |
arraynullable |
|
status |
stringnullable |
draft | in_review | published | archived. Editorial only — never leaves this API. |
sortOrder |
numbernullable |
|
targetLabel |
stringnullable |
Free text, e.g. "Q3" — deliberately not a date. |
publishedVersion |
numbernullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/plan/items/{itemId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
PATCH
/v1/companies/{companyId}/plan/items/{itemId}
plan:write
Update an item.
Slug is deliberately not updatable — changing it breaks every link already shared.
Path parameters
companyId | string |
required |
itemId | string |
required |
Body
title |
string |
|
summary |
string |
|
columnId |
string |
|
categoryIds |
array |
|
status |
string |
|
sortOrder |
integer |
|
targetLabel |
string |
|
Returns
id |
string |
|
roadmapId |
string |
|
companyId |
string |
|
slug |
string |
Stable public identifier. Frozen after creation. |
title |
string |
|
summary |
stringnullable |
|
columnId |
stringnullable |
Which column it sits in on the public board. |
categoryIds |
arraynullable |
|
status |
stringnullable |
draft | in_review | published | archived. Editorial only — never leaves this API. |
sortOrder |
numbernullable |
|
targetLabel |
stringnullable |
Free text, e.g. "Q3" — deliberately not a date. |
publishedVersion |
numbernullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl -X PATCH https://api.pyromanic.com/v1/companies/{companyId}/plan/items/{itemId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"…","summary":"…"}'
DELETE
/v1/companies/{companyId}/plan/items/{itemId}
plan:write
Delete an item.
Removes the authoring record. Anything already published stays visible until the next publish.
Path parameters
companyId | string |
required |
itemId | string |
required |
Returns
id |
string |
|
deleted |
boolean |
|
Example
curl -X DELETE https://api.pyromanic.com/v1/companies/{companyId}/plan/items/{itemId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
POST
/v1/companies/{companyId}/plan/boards/{boardId}/publish/preview
plan:read
See exactly what publishing would make visible.
A dry run. Nothing changes. Worth calling first from automation, since publishing is the point at which drafts become public and there is no undo beyond republishing.
Path parameters
companyId | string |
required |
boardId | string |
required |
Returns
Example
curl -X POST https://api.pyromanic.com/v1/companies/{companyId}/plan/boards/{boardId}/publish/preview \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
POST
/v1/companies/{companyId}/plan/boards/{boardId}/publish
plan:publish
Publish the board.
Makes published items visible to the delivery API. Call the preview first — this is the moment drafts become public.
Path parameters
companyId | string |
required |
boardId | string |
required |
Returns
Example
curl -X POST https://api.pyromanic.com/v1/companies/{companyId}/plan/boards/{boardId}/publish \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
Feedback
GET
/v1/companies/{companyId}/feedback
feedback:read
List reviews and mentions.
Path parameters
Query parameters
limit | integer |
requireddefault 50 |
source | string |
app_store · google_play · reddit |
sentiment | string |
positive · neutral · negative |
replyStatus | string |
Filter to a stage of the reply workflow — "needs_review" is the queue.none · draft · needs_review · approved · posting · posted · failed · skipped |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/feedback \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}/feedback/{feedbackId}
feedback:read
Fetch one review or mention.
Path parameters
companyId | string |
required |
feedbackId | string |
required |
Returns
id |
string |
|
companyId |
string |
|
source |
stringnullable |
app_store | google_play | reddit |
kind |
stringnullable |
review | mention |
externalId |
string |
The platform's own id. |
externalUrl |
stringnullable |
|
authorName |
stringnullable |
|
title |
stringnullable |
|
body |
stringnullable |
|
rating |
numbernullable |
Null for mentions, which carry no rating. |
appVersion |
stringnullable |
|
territory |
stringnullable |
|
locale |
stringnullable |
|
postedAt |
stringnullable |
|
fetchedAt |
stringnullable |
|
flags |
arraynullable |
Risk labels: money, defect, legal, safety, churn. |
priority |
numbernullable |
Lower sorts first. |
sentiment |
stringnullable |
positive | neutral | negative |
replyBody |
stringnullable |
|
replyStatus |
stringnullable |
none | draft | needs_review | approved | posting | posted | failed | skipped |
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/feedback/{feedbackId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
PATCH
/v1/companies/{companyId}/feedback/{feedbackId}/reply
feedback:write
Write or update the reply to a review.
Stores the reply text and its workflow status. This does not send anything — posting back to the platform is a separate, human-confirmed step, and several sources are read-only. Set status to "approved" to mark a reply ready to send.
Path parameters
companyId | string |
required |
feedbackId | string |
required |
Body
replyBody |
string |
|
replyStatus |
string |
|
Returns
id |
string |
|
companyId |
string |
|
source |
stringnullable |
app_store | google_play | reddit |
kind |
stringnullable |
review | mention |
externalId |
string |
The platform's own id. |
externalUrl |
stringnullable |
|
authorName |
stringnullable |
|
title |
stringnullable |
|
body |
stringnullable |
|
rating |
numbernullable |
Null for mentions, which carry no rating. |
appVersion |
stringnullable |
|
territory |
stringnullable |
|
locale |
stringnullable |
|
postedAt |
stringnullable |
|
fetchedAt |
stringnullable |
|
flags |
arraynullable |
Risk labels: money, defect, legal, safety, churn. |
priority |
numbernullable |
Lower sorts first. |
sentiment |
stringnullable |
positive | neutral | negative |
replyBody |
stringnullable |
|
replyStatus |
stringnullable |
none | draft | needs_review | approved | posting | posted | failed | skipped |
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl -X PATCH https://api.pyromanic.com/v1/companies/{companyId}/feedback/{feedbackId}/reply \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"replyBody":"…","replyStatus":"…"}'
Metrics
GET
/v1/companies/{companyId}/metrics/definitions
metrics:read
List metric definitions.
What this company measures. Read this to learn the keys the points endpoint accepts.
Path parameters
Query parameters
limit | integer |
requireddefault 100 |
needsReview | string |
Filter to keys auto-created by an unrecognised push and not yet confirmed.true · false |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/metrics/definitions \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}/metrics/points
metrics:read
Read a metric series.
Values for one metric over a date range. Points are keyed so a re-send overwrites in place, which is why a backfill and a nightly recompute both look like this.
Path parameters
Query parameters
metricKey | string |
requiredRequired. From the definitions endpoint. |
grain | string |
requireddefault "day"day · week · month |
from | string |
ISO date, inclusive. |
to | string |
ISO date, inclusive. |
limit | integer |
requireddefault 365 |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/metrics/points \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
Optimise
GET
/v1/companies/{companyId}/optimise/sites
optimise:read
List measured sites.
Path parameters
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/optimise/sites \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}/optimise/sites/{siteId}/goals
optimise:read
List goals defined on a site.
Path parameters
companyId | string |
required |
siteId | string |
required |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/optimise/sites/{siteId}/goals \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}/optimise/audits
optimise:read
List site audits.
Scores and summaries. Fetch one audit for its per-page findings.
Path parameters
Query parameters
limit | integer |
requireddefault 20 |
siteId | string |
|
status | string |
running · complete · failed |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/optimise/audits \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}/optimise/audits/{auditId}
optimise:read
Fetch one audit, with findings.
Path parameters
companyId | string |
required |
auditId | string |
required |
Returns
id |
string |
|
companyId |
string |
|
siteId |
stringnullable |
|
rootUrl |
stringnullable |
|
status |
stringnullable |
running | complete | failed |
startedAt |
stringnullable |
|
finishedAt |
stringnullable |
|
scoreSeo |
numbernullable |
|
scoreAeo |
numbernullable |
|
scoreGeo |
numbernullable |
|
pagesAudited |
numbernullable |
|
summary |
stringnullable |
|
error |
stringnullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
findings |
anynullable |
Per-page findings. Large — only returned for a single audit. |
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/optimise/audits/{auditId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
Broadcast
GET
/v1/companies/{companyId}/broadcast/plans
broadcast:read
List content plans.
Path parameters
Query parameters
limit | integer |
requireddefault 25 |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/broadcast/plans \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}/broadcast/ideas
broadcast:read
List content ideas.
Path parameters
Query parameters
limit | integer |
requireddefault 50 |
planId | string |
|
status | string |
suggested · accepted · rejected |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/broadcast/ideas \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}/broadcast/posts
broadcast:read
List posts.
Drafts, scheduled and published. Filter by status to get a queue.
Path parameters
Query parameters
limit | integer |
requireddefault 50 |
platform | string |
x · instagram · tiktok · facebook · reddit · push |
status | string |
e.g. draft, scheduled, published, failed |
ideaId | string |
|
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/broadcast/posts \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
POST
/v1/companies/{companyId}/broadcast/posts
broadcast:write
Draft a post.
Created as a draft. Set scheduledFor and status to "scheduled" to queue it — the dispatcher picks it up from there. Nothing here sends anything itself.
Path parameters
Body
platform |
string |
required |
title |
string |
|
body |
string |
required |
hashtags |
array |
|
ideaId |
string |
|
destination |
string |
push only: the segment to send to. |
deepLink |
string |
|
scheduledFor |
string |
ISO 8601. Omit to leave it unscheduled. |
status |
string |
required |
Returns
id |
string |
|
companyId |
string |
|
ideaId |
stringnullable |
|
platform |
stringnullable |
|
title |
stringnullable |
|
body |
stringnullable |
|
threadParts |
arraynullable |
Set when the body exceeds one post. |
hashtags |
arraynullable |
|
media |
anynullable |
|
destination |
stringnullable |
|
deepLink |
stringnullable |
|
scheduledFor |
stringnullable |
|
status |
stringnullable |
|
publishedAt |
stringnullable |
|
externalId |
stringnullable |
|
externalUrl |
stringnullable |
|
failureReason |
stringnullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl -X POST https://api.pyromanic.com/v1/companies/{companyId}/broadcast/posts \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"platform":"…","title":"…"}'
GET
/v1/companies/{companyId}/broadcast/posts/{postId}
broadcast:read
Fetch one post.
Path parameters
companyId | string |
required |
postId | string |
required |
Returns
id |
string |
|
companyId |
string |
|
ideaId |
stringnullable |
|
platform |
stringnullable |
|
title |
stringnullable |
|
body |
stringnullable |
|
threadParts |
arraynullable |
Set when the body exceeds one post. |
hashtags |
arraynullable |
|
media |
anynullable |
|
destination |
stringnullable |
|
deepLink |
stringnullable |
|
scheduledFor |
stringnullable |
|
status |
stringnullable |
|
publishedAt |
stringnullable |
|
externalId |
stringnullable |
|
externalUrl |
stringnullable |
|
failureReason |
stringnullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/broadcast/posts/{postId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
PATCH
/v1/companies/{companyId}/broadcast/posts/{postId}
broadcast:write
Update or schedule a post.
Only unsent posts can be edited.
Path parameters
companyId | string |
required |
postId | string |
required |
Body
title |
string |
|
body |
string |
|
hashtags |
array |
|
destination |
string |
|
deepLink |
string |
|
scheduledFor |
string |
|
status |
string |
|
Returns
id |
string |
|
companyId |
string |
|
ideaId |
stringnullable |
|
platform |
stringnullable |
|
title |
stringnullable |
|
body |
stringnullable |
|
threadParts |
arraynullable |
Set when the body exceeds one post. |
hashtags |
arraynullable |
|
media |
anynullable |
|
destination |
stringnullable |
|
deepLink |
stringnullable |
|
scheduledFor |
stringnullable |
|
status |
stringnullable |
|
publishedAt |
stringnullable |
|
externalId |
stringnullable |
|
externalUrl |
stringnullable |
|
failureReason |
stringnullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl -X PATCH https://api.pyromanic.com/v1/companies/{companyId}/broadcast/posts/{postId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"…","body":"…"}'
DELETE
/v1/companies/{companyId}/broadcast/posts/{postId}
broadcast:write
Delete an unsent post.
Path parameters
companyId | string |
required |
postId | string |
required |
Returns
id |
string |
|
deleted |
boolean |
|
Example
curl -X DELETE https://api.pyromanic.com/v1/companies/{companyId}/broadcast/posts/{postId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
GET
/v1/companies/{companyId}/broadcast/channels
broadcast:read
List connected channels.
Which platforms are connected and whether their credentials still work.
Path parameters
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/broadcast/channels \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
Context
GET
/v1/companies/{companyId}/context/brand-kit
context:read
Fetch the brand kit.
Voice, colours and art direction. Read this before generating anything.
Path parameters
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/context/brand-kit \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
PATCH
/v1/companies/{companyId}/context/brand-kit
context:write
Update the brand kit.
Creates it if the company has none. Changing voice guidelines changes every future draft.
Path parameters
Body
voiceTone |
array |
Descriptors, e.g. ['direct', 'wry']. Replaces the whole list. |
voiceGuidelines |
string |
|
voiceExamples |
array |
Replaces the whole list. |
avoidWords |
array |
Replaces the whole list. |
artStyle |
string |
|
artDirection |
string |
|
imageryNotes |
string |
|
context |
string |
|
Returns
id |
string |
|
companyId |
string |
|
voiceTone |
arraynullable |
Descriptors, e.g. ['direct', 'wry']. |
voiceGuidelines |
stringnullable |
Prose do/don't rules the generators follow. |
voiceExamples |
arraynullable |
Phrases that sound like this company. |
avoidWords |
arraynullable |
Words and phrases never to use. |
colors |
anynullable |
|
fonts |
anynullable |
|
artStyle |
stringnullable |
|
artDirection |
stringnullable |
|
imageryNotes |
stringnullable |
|
context |
stringnullable |
Anything else a writer should know. |
extractedFrom |
stringnullable |
Where this was read from, if it was extracted. |
lastExtractedAt |
stringnullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl -X PATCH https://api.pyromanic.com/v1/companies/{companyId}/context/brand-kit \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"voiceTone":"…","voiceGuidelines":"…"}'
GET
/v1/companies/{companyId}/context/content-types
context:read
List content types.
The kinds of post this company publishes, and how each should be written.
Path parameters
Query parameters
limit | integer |
requireddefault 50 |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/context/content-types \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"
POST
/v1/companies/{companyId}/context/content-types
context:write
Add a content type.
Path parameters
Body
name |
string |
required |
description |
string |
|
guidance |
string |
How this kind of post should read. |
defaultPlatforms |
array |
|
cadence |
string |
|
active |
boolean |
required |
Returns
id |
string |
|
companyId |
string |
|
name |
stringnullable |
|
description |
stringnullable |
|
guidance |
stringnullable |
How to write this kind of post. |
defaultPlatforms |
arraynullable |
|
cadence |
stringnullable |
|
active |
booleannullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl -X POST https://api.pyromanic.com/v1/companies/{companyId}/context/content-types \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"…","description":"…"}'
PATCH
/v1/companies/{companyId}/context/content-types/{contentTypeId}
context:write
Update a content type.
Path parameters
companyId | string |
required |
contentTypeId | string |
required |
Body
name |
string |
|
description |
string |
|
guidance |
string |
|
defaultPlatforms |
array |
|
cadence |
string |
|
active |
boolean |
|
Returns
id |
string |
|
companyId |
string |
|
name |
stringnullable |
|
description |
stringnullable |
|
guidance |
stringnullable |
How to write this kind of post. |
defaultPlatforms |
arraynullable |
|
cadence |
stringnullable |
|
active |
booleannullable |
|
createdAt |
stringnullable |
|
updatedAt |
stringnullable |
|
Example
curl -X PATCH https://api.pyromanic.com/v1/companies/{companyId}/context/content-types/{contentTypeId} \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"…","description":"…"}'
GET
/v1/companies/{companyId}/context/goals
context:read
List brand goals.
Path parameters
Query parameters
limit | integer |
requireddefault 50 |
Returns
Example
curl https://api.pyromanic.com/v1/companies/{companyId}/context/goals \
-H "Authorization: Bearer $PYROMANIC_SECRET_KEY"