API Endpoints
Öffentliche Endpoints für Blog-Posts, View-Tracking und Newsletter-Subscribers.
Basis
Base URL
https://copy-choices.de/api/v1Beispiel:
/api/v1/postsAntwortformat
application/jsonRequests:
Accept: application/json
Rate Limits
POST /posts/{slug}/track-view: 60/minPOST /subscribers: 20/min
Endpoints
Aufklappen → Beispiel → Try
GET /posts Liste veröffentlichter Posts (paginert), optional Target-Filter
Query
target=all|handmade|b2b
Default: all
curl
curl -s "https://copy-choices.de/api/v1/posts?target=handmade"
Target
Response (gekürzt)
{
"filter_target": "handmade",
"data": [ { "id": 1, "title": "…", "slug": "…", "views": { "total": 123, "unique_total": 45 } } ],
"meta": { "current_page": 1, "last_page": 3, "per_page": 20, "total": 49 }
}
GET /posts/{slug} Post-Detail inkl. Content + Tracking-Info
Parameter
Path: slug
Query: target=all|handmade|b2b
curl
curl -s "https://copy-choices.de/api/v1/posts/beispiel-slug?target=all"
Slug
Target
Response (gekürzt)
{
"filter_target": "all",
"data": { "id": 1, "slug": "…", "content_type": "html", "content": "…", "views": { "total": 124, "unique_total": 46 } },
"tracking": { "vid": "uuid…", "vid_is_new": false, "unique_counted": true }
}
POST /posts/{slug}/track-view Views total + unique pro Besucher/Tag
Hinweise
Cookie: cc_vid (wird gesetzt)
Rate: 60/min
curl
curl -s -X POST "https://copy-choices.de/api/v1/posts/beispiel-slug/track-view"
Slug
Response (Beispiel)
{
"ok": true,
"unique_counted": true,
"views": { "total": 125, "unique_total": 47 }
}
POST /subscribers Subscriber anlegen/aktualisieren (Double-Opt-In + Honeypot)
Body
email (required)
target=all|handmade|b2b (required)
Rate: 20/min
curl
curl -s -X POST "https://copy-choices.de/api/v1/subscribers" \
-H "Content-Type: application/json" \
-d '{"name":null,"email":"max@example.com","target":"handmade","company":""}'
Email
Target
Honeypot: Wenn
company gefüllt ist, antwortet der Server absichtlich „ok“,
führt intern aber keine echte Anmeldung aus.
Response (Beispiel)
{
"ok": true,
"verified": false,
"message": "Bitte bestätige deine E-Mail über den Link, den wir dir gesendet haben."
}