# Easyverein API

> Work with the easyVerein v2.0 REST API (members, contacts, events, invoices, bookings, custom fields, etc.). Use for full API coverage: endpoint discovery, auth, request/response schemas, and example cURL calls.

- Skill: `modbender/easyverein-api` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add modbender/easyverein-api`
- Raw SKILL.md: https://api.skillmd.com/api/skills/modbender/easyverein-api/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: modbender (https://skillmd.com/u/modbender)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/modbender/easyverein-api

---


# easyVerein API (v2.0)

## Quick start
- Base URL: `https://easyverein.com/api/v2.0`
- Auth header: `Authorization: Bearer <API_KEY>`
- Tokens expire after 30 days; refresh via `GET /api/v2.0/refresh-token` when `tokenRefreshNeeded` appears in response headers.
- Rate limit: **100 requests/min**.

## Use the OpenAPI spec
Read the full spec when you need endpoint details or schemas:
- `references/openapi-v2.json`

This file contains **all endpoints**, parameters, request bodies, responses, and tags. Use it to:
- list endpoints by tag (e.g., `member`, `contact-details`, `invoice`)
- inspect request body schemas
- find actions and sub-endpoints

## Common patterns
- Pagination: `?limit=` (default 5, max 100)
- Field selection: `?query={field,relation{subfield}}`
- Excluding fields: `?query={-field}`
- Bulk operations: `bulk-create` / `bulk-update` (supported by select endpoints)

## Example cURL (template)
```bash
curl -s \
  -H "Authorization: Bearer $EASYVEREIN_TOKEN" \
  -H "Content-Type: application/json" \
  "https://easyverein.com/api/v2.0/member?limit=10"
```

## Member creation flow (important)
1) Create `contact-details` first.
2) Then create `member` with `emailOrUserName` and `contactDetails` reference.

## Notes
- Files must be uploaded via **PATCH** with `Content-Disposition` header.
- Use `refresh-token` to rotate tokens; old token becomes invalid immediately.

