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 Fehler bei der E-Rechnung",
    "input": "Kurzer Fachtext oder Stichpunkte ...",
    "platforms": ["linkedin", "twitter", "mastodon"]
  }'

Response (truncated):

{
  "articleId": "…",
  "title": "5 Fehler bei der E-Rechnung",
  "results": [
    { "platform": "linkedin", "content": "…", "hashtags": ["ERechnung"] },
    { "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: "Euer Fachtext ...",
    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.