Hilfe

Hier findet ihr Anleitungen, Erklärungen und alles Wichtige rund um Wortfreunde. Damit ihr das Beste aus eurer Content Arbeit herausholen könnt.

Quick Start

This guide walks you through your first API calls using curl. By the end, you'll have verified your credentials, listed channels, browsed posts, and fetched a single post.

Prerequisites

Before starting, ensure you have:

  • A Wortfreunde account
  • An API key (get one here)
  • curl installed (available on macOS, Linux, and Windows)

Set your API key as an environment variable so you can copy-paste the examples below:

export WORTFREUNDE_API_KEY="your-api-key-here"

Step 1: Check Authentication

First, verify that your API key is valid by calling the /me endpoint:

curl -s https://api.wortfreunde.ch/v1/me \
  -H "Authorization: Bearer $WORTFREUNDE_API_KEY" | python3 -m json.tool

You should see your account details:

{
  "data": {
    "account": {
      "id": 3,
      "name": "Wertstifter GmbH"
    },
    "token": {
      "name": "Development Token",
      "scopes": [
        "read:channels",
        "read:posts",
        "read:media"
      ],
      "expires_at": "2027-03-09T09:53:43.348Z"
    }
  }
}

Step 2: List Channels

Now let's see which channels are available in your account:

curl -s https://api.wortfreunde.ch/v1/channels \
  -H "Authorization: Bearer $WORTFREUNDE_API_KEY" | python3 -m json.tool

Response:

{
    "data": [
        {
            "id": 161,
            "title": "Blog",
            "platform": "git",
            "team": {
                "id": 42,
                "name": "Wortfreunde"
            },
            "posts_count": 3
        },
        {
            "id": 167,
            "title": "Blog",
            "platform": "blog",
            "team": null,
            "posts_count": 0
        },
}

Note the channel id, you'll need it to list posts for a specific channel.

Step 3: List Posts

Fetch posts from a channel. Replace 161 with a channel ID from the previous step:

curl -s "https://api.wortfreunde.ch/v1/channels/161/posts \
  -H "Authorization: Bearer $WORTFREUNDE_API_KEY" | python3 -m json.tool

Response:

{
  "data": [
    {
        "id": 214,
        "title": "Warum strukturierte Content-Planung mehr bringt als spontane Posts",
        "teaser": "Montagmorgen. Der Cursor blinkt. Was soll ich heute posten? Dir fällt nichts ein. Also scrollst du durch den Feed, hoffst auf Inspiration. Eine Stunde später: immer noch kein Post. Dafür drei neue Tabs mit Artikeln, die du später lesen willst. Das Problem ist fehlende Struktur.",
        "slug": "strukturierte-content-planung-vs-spontane-posts",
        "publication_status": "published",
        "created_at": "2026-03-02T16:54:36.465Z",
        "updated_at": "2026-03-09T05:00:48.275Z",
        "channel": {
            "id": 161,
            "title": "Blog",
            "platform": "git",
            "team": {
                "id": 42,
                "name": "Wortfreunde"
            },
            "posts_count": 3
        }
    },
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 42
  }
}

Step 4: Get Post Detail

Fetch the full details of a single post using its ID:

curl -s https://api.wortfreunde.ch/v1/posts/301 \
  -H "Authorization: Bearer $WORTFREUNDE_API_KEY" | python3 -m json.tool

Response:

{
  "data": {
    "id": 214,
    "title": "Warum strukturierte Content-Planung mehr bringt als spontane Posts",
    "body": "... markdown content ...",
    "teaser": "Montagmorgen. Der Cursor blinkt. Was soll ich heute posten? Dir fällt nichts ein. Also scrollst du durch den Feed, hoffst auf Inspiration. Eine Stunde später: immer noch kein Post. Dafür drei neue Tabs mit Artikeln, die du später lesen willst. Das Problem ist fehlende Struktur.",
    "slug": "strukturierte-content-planung-vs-spontane-posts",
    "publication_status": "published",
    "created_at": "2026-03-02T16:54:36.465Z",
    "updated_at": "2026-03-09T05:00:48.275Z",
    "channel": {
        "id": 161,
        "title": "Blog",
        "platform": "git",
        "team": {
            "id": 42,
            "name": "Wortfreunde"
        },
        "posts_count": 3
    },
    "tags": [],
    "media": [],
    "meta_title": "Strukturierte Content-Planung vs. spontane Posts",
    "meta_description": "Erfahre, warum strukturierte Content-Planung mehr Sichtbarkeit und Resonanz bringt als spontane Posts.",
    "published_at": "2026-03-09T05:00:48.269Z"
  }
}

Error Handling

If something goes wrong, the API returns a clear error response:

{
  "error": {
    "code": "authentication_failed",
    "message": "Invalid API key provided"
  }
}

Common status codes:

CodeMeaning
200Success
401Invalid or missing API key
403Valid key but insufficient scopes
404Resource not found
429Rate limit exceeded

Next Steps

You've successfully made your first API calls:

  • Verified your credentials with /me
  • Listed channels with /channels
  • Browsed posts with /channels/:channel_id/posts
  • Fetched post details with /channels/:channel_id/posts/:id

What's Next?