Skip to content
CLUP.life

Developers API reference

API reference

All routes of the CLUP.life REST API v1 with parameters, responses and examples — generated from the OpenAPI description. Download as JSON and YAML.

This reference is generated from the real OpenAPI description; it cannot drift from the API. A development test fails as soon as a route is missing or the description no longer matches the documentation.

Base URL: https://api.clup.life/api/v1 · OpenAPI 3.1.0 · Version 1.0.0

GET /ext/me

GET/ext/me

Who am I? Account, scopes of the key, memberships

Areas: profile:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/me"

GET /ext/directory/organizations

GET/ext/directory/organizations

Search the club directory (public organizations only)

Areas: directory:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
cursorQueryoffContinuation from nextCursor of the previous response (no page numbers, no OFFSET)
limitQueryoff1–100, default 30
qQueryoffSearch term (display name; in the directory: name, short name or place)
categoriesQueryoffTopics, separated with |
typesQueryoffCLUB, ASSOCIATION, GROUP, MUNICIPALITY (comma-separated)
stateQueryoffFederal state as a code, e.g. DE-RP (comma-separated)
placeQueryoffTown or postal code
radiusKmQueryoffRadius 1–300 (with place)
ageFromQueryoffOffer for ages from
ageToQueryoffOffer for ages up to
membersMinQueryoffMinimum number of members
membersMaxQueryoffMaximum number of members
foundedFromQueryoffFounded from (year)
foundedToQueryoffFounded up to (year)
acceptingQueryoff1 = accepts new members
sortQueryoffrelevance, distance, name, size or new
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/directory/organizations"

GET /ext/events

GET/ext/events

Events in a period

Areas: events:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
fromQueryonStart of the period (ISO 8601, e.g. 2026-11-01T00:00:00Z)
toQueryonEnd of the period (at most 400 days after from)
organizationQueryoffOnly events of this organization (slug)
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/events?from=2026-11-01T00:00:00Z&to=2026-12-01T00:00:00Z"

POST /ext/organizations/{org}/events

POST/ext/organizations/{org}/events

Create an event

Areas: events:writePremium (organization key)

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
orgPathonIdentifier (slug) of the organization
{
  "title": "Sommerfest",
  "startsAt": "2026-07-04T14:00:00Z",
  "endsAt": "2026-07-04T20:00:00Z",
  "visibility": "MEMBERS"
}
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -X POST -H "Authorization: Bearer clup_k_…" \
  -H "Content-Type: application/json" \
  -d '{"title":"Sommerfest","startsAt":"2026-07-04T14:00:00Z","endsAt":"2026-07-04T20:00:00Z","visibility":"MEMBERS"}' \
  "https://api.clup.life/api/v1/ext/organizations/mein-verein/events"

GET /ext/organizations/{org}/members

GET/ext/organizations/{org}/members

Member list (only if the person’s role shows it)

Areas: members:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
orgPathonIdentifier (slug) of the organization
cursorQueryoffContinuation from nextCursor of the previous response (no page numbers, no OFFSET)
limitQueryoff1–100, default 30
qQueryoffSearch term (display name; in the directory: name, short name or place)
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/organizations/mein-verein/members"

GET /ext/organizations/{org}/posts

GET/ext/organizations/{org}/posts

Posts

Areas: posts:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
orgPathonIdentifier (slug) of the organization
cursorQueryoffContinuation from nextCursor of the previous response (no page numbers, no OFFSET)
limitQueryoff1–100, default 30
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/organizations/mein-verein/posts"

GET /ext/organizations/{org}/announcements

GET/ext/organizations/{org}/announcements

Announcements

Areas: announcements:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
orgPathonIdentifier (slug) of the organization
cursorQueryoffContinuation from nextCursor of the previous response (no page numbers, no OFFSET)
limitQueryoff1–100, default 30
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/organizations/mein-verein/announcements"

POST /ext/organizations/{org}/announcements

POST/ext/organizations/{org}/announcements

Publish an announcement

Areas: announcements:writePremium (organization key)

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
orgPathonIdentifier (slug) of the organization
{
  "title": "Hallenzeiten ändern sich",
  "body": "Ab Montag trainieren wir in der kleinen Halle."
}
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -X POST -H "Authorization: Bearer clup_k_…" \
  -H "Content-Type: application/json" \
  -d '{"title":"Hallenzeiten ändern sich","body":"Ab Montag trainieren wir in der kleinen Halle."}' \
  "https://api.clup.life/api/v1/ext/organizations/mein-verein/announcements"

GET /ext/organizations/{org}/tasks

GET/ext/organizations/{org}/tasks

Tasks

Areas: tasks:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
orgPathonIdentifier (slug) of the organization
scopeQueryoffopen (default) or done
cursorQueryoffContinuation from nextCursor of the previous response (no page numbers, no OFFSET)
limitQueryoff1–100, default 30
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/organizations/mein-verein/tasks"

POST /ext/organizations/{org}/tasks

POST/ext/organizations/{org}/tasks

Create a task

Areas: tasks:writePremium (organization key)

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
orgPathonIdentifier (slug) of the organization
{
  "title": "Zelte prüfen",
  "dueDate": "2026-06-20"
}
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -X POST -H "Authorization: Bearer clup_k_…" \
  -H "Content-Type: application/json" \
  -d '{"title":"Zelte prüfen","dueDate":"2026-06-20"}' \
  "https://api.clup.life/api/v1/ext/organizations/mein-verein/tasks"

GET /ext/presse/posts

GET/ext/presse/posts

Published press releases and news

Areas: presse:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
artQueryoffPRESS_RELEASE or NEWS
langQueryoffLanguage code, e.g. de, en (falls back to German)
cursorQueryoffContinuation from nextCursor of the previous response (no page numbers, no OFFSET)
limitQueryoff1–100, default 30
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/presse/posts"

POST /ext/presse/posts

POST/ext/presse/posts

Create a press release or news item as a draft

Areas: presse:writePremium (organization key)

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

{
  "kind": "NEWS",
  "slug": "neue-funktion",
  "texts": [
    {
      "locale": "de",
      "title": "Neue Funktion",
      "summary": "Kurzer Anreißer der Meldung.",
      "body": "Text in einfachem Markdown."
    }
  ]
}
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -X POST -H "Authorization: Bearer clup_k_…" \
  -H "Content-Type: application/json" \
  -d '{"kind":"NEWS","slug":"neue-funktion","texts":[{"locale":"de","title":"Neue Funktion","summary":"Kurzer Anreißer der Meldung.","body":"Text in einfachem Markdown."}]}' \
  "https://api.clup.life/api/v1/ext/presse/posts"

GET /ext/presse/posts/{ref}

GET/ext/presse/posts/{ref}

One post by slug (with presse:write also by id, including drafts)

Areas: presse:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
refPathonSlug or identifier of the post
langQueryoffLanguage code, e.g. de, en (falls back to German)
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/presse/posts/{ref}"

PUT /ext/presse/posts/{id}

PUT/ext/presse/posts/{id}

Change a post

Areas: presse:writePremium (organization key)

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
idPathonIdentifier of the post
{
  "kind": "NEWS",
  "slug": "neue-funktion",
  "texts": [
    {
      "locale": "de",
      "title": "Neue Funktion",
      "summary": "Kurzer Anreißer der Meldung.",
      "body": "Geänderter Text."
    }
  ]
}
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  -H "Content-Type: application/json" \
  -d '{"kind":"NEWS","slug":"neue-funktion","texts":[{"locale":"de","title":"Neue Funktion","summary":"Kurzer Anreißer der Meldung.","body":"Geänderter Text."}]}' \
  "https://api.clup.life/api/v1/ext/presse/posts/{id}"

POST /ext/presse/posts/{id}/publish

POST/ext/presse/posts/{id}/publish

Publish a post now

Areas: presse:writePremium (organization key)

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
idPathonIdentifier of the post
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -X POST -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/presse/posts/{id}/publish"

POST /ext/presse/posts/{id}/schedule

POST/ext/presse/posts/{id}/schedule

Schedule publication

Areas: presse:writePremium (organization key)

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
idPathonIdentifier of the post
{
  "publishAt": "2026-11-01T08:00:00Z"
}
StatusMeaning
200Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -X POST -H "Authorization: Bearer clup_k_…" \
  -H "Content-Type: application/json" \
  -d '{"publishAt":"2026-11-01T08:00:00Z"}' \
  "https://api.clup.life/api/v1/ext/presse/posts/{id}/schedule"

GET /ext/exports/events.ics

GET/ext/exports/events.ics

Events as iCal

Areas: exports:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
fromQueryonStart of the period (ISO 8601, e.g. 2026-11-01T00:00:00Z)
toQueryonEnd of the period (at most 400 days after from)
organizationQueryoffOnly events of this organization (slug)
StatusMeaning
200 (text/calendar)Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/exports/events.ics?from=2026-11-01T00:00:00Z&to=2026-12-01T00:00:00Z"

GET /ext/exports/events.csv

GET/ext/exports/events.csv

Events as CSV

Areas: exports:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
fromQueryonStart of the period (ISO 8601, e.g. 2026-11-01T00:00:00Z)
toQueryonEnd of the period (at most 400 days after from)
organizationQueryoffOnly events of this organization (slug)
StatusMeaning
200 (text/csv)Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/exports/events.csv?from=2026-11-01T00:00:00Z&to=2026-12-01T00:00:00Z"

GET /ext/exports/organizations/{org}/members.csv

GET/ext/exports/organizations/{org}/members.csv

Member list as CSV (leadership only, logged)

Areas: exports:read, members:read

The rights of the person behind the key apply unchanged; foreign or invisible organizations answer 404.

NameLocationObligationDescription
orgPathonIdentifier (slug) of the organization
StatusMeaning
200 (text/csv)Success
401Key invalid, expired or revoked (INVALID_API_KEY)
403Scope missing (INSUFFICIENT_SCOPE), right missing (FORBIDDEN) or Premium required (PREMIUM_REQUIRED)
404Not found — also for organizations the key may not see
429Too many requests (RATE_LIMITED); respect Retry-After
curl -H "Authorization: Bearer clup_k_…" \
  "https://api.clup.life/api/v1/ext/exports/organizations/mein-verein/members.csv"
API reference · CLUP.life