PersonativPersonativ
Personativ API v1
OpenAPI

The Personativ API

Automate your content workflow: one input, one independently written channel-native post per channel in your brand voice. GDPR compliant, EU sovereign, via REST.

Base URL: https://personativ.de/api/v1

Authentication

Every request authenticates via the workspace API key in the header X-API-Key. You create the key in Settings under "Delivery / API". Treat it like a password.

curl https://personativ.de/api/v1/me \
  -H "X-API-Key: dein_workspace_api_key"

Endpoints

GET
/api/v1/me

Workspace info and current credit balance.

GET
/api/v1/channels

Connected social channels.

GET
/api/v1/trends

Current trend radar hits incl. relevance score.

GET
/api/v1/articles

List published articles.

GET
/api/v1/articles/{slug}

Retrieve a single article (incl. HTML).

POST
/api/v1/articles

Create an article draft.

POST
/api/v1/compose

Flagship: one input, one channel-native post per channel.

Example: capture once, deliver channel-native

One expert article as input, from it an independent post per channel. Consumes credits (capture plus one AI text per channel).

curl -X POST https://personativ.de/api/v1/compose \
  -H "X-API-Key: dein_workspace_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "text",
    "title": "5 mistakes with e-invoicing",
    "input": "Short expert text or bullet points on the e-invoicing requirement ...",
    "platforms": ["linkedin", "twitter", "mastodon"]
  }'

Response (truncated):

{
  "articleId": "…",
  "title": "5 mistakes with e-invoicing",
  "results": [
    { "platform": "linkedin", "content": "…", "hashtags": ["einvoicing"] },
    { "platform": "twitter",  "content": "…", "hashtags": ["…"] }
  ],
  "creditsCharged": 4,
  "credits": { "available": 196 }
}

JavaScript / Node

const res = await fetch("https://personativ.de/api/v1/compose", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.CONTENTFLOW_API_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    input: "Your expert text or your bullet points ...",
    platforms: ["linkedin", "twitter"]
  })
});
const data = await res.json();

Good to know

  • Rate limit: 60 requests per minute per API key.
  • Billed via the same credit model as the app.
  • AI processing can be made EU sovereign (sovereign mode), otherwise a one-time EU confirmation is required.
  • Errors come as JSON with error and code.

No workspace yet?

14 days free, API included.

Start free

Frequently asked questions

How do I authenticate against the API?

Via the workspace API key in the header X-API-Key. You create the key in Settings under Delivery / API. Treat it like a password.

What does the /compose endpoint do?

One input, one independently written channel-native post per channel in your brand voice. Consumes credits (capture plus one AI text per channel).

Is there a rate limit?

Yes, 60 requests per minute per API key. Billing runs via the same credit model as the app.

Is the API GDPR compliant?

Yes. AI processing can be made EU sovereign (sovereign mode), otherwise a one-time EU confirmation is required.

Is there an OpenAPI description?

Yes, at /api/v1/openapi.json. Errors come as JSON with the fields error and code.