Developers
Build on ZekerFlex
A REST API for shifts, timesheets and webhooks, plus a read-mostly GraphQL endpoint. Both run against the same data as the dashboard — nothing here is a separate sandbox.
Reference
OpenAPI spec
The full machine-readable spec — every endpoint, request/response schema and error shape — is published at https://www.zekerflex.com/openapi.json. Point any OpenAPI-aware tool (Postman, an LLM function-calling layer, a codegen client) at it directly.
Authentication
API keys
Every request needs an API key, either as a Bearer token or an x-api-key header:
Authorization: Bearer zf_live_...
# or
x-api-key: zf_live_...Keys are scoped (shifts:read, shifts:write, timesheets:read, webhooks:manage, invoices:read, users:read) and rate-limited per your plan (see pricing below) — every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset headers so you can self-throttle before hitting a 429. Logged-in employers create and manage their own keys at /werkgever/integraties — no need to email anyone for the Free tier. Need Scale-level volume? Talk to partners@zekerflex.com.
Pricing
Plans
Free
Free
- 60 req/min
- 10,000/month
- 2 scopes
Starter
€49/mo
- 300 req/min
- 100,000/month
- 4 scopes
Pro
€199/mo
- 1200 req/min
- 1,000,000/month
- 6 scopes
Scale
Custom
- 1200 req/min
- Negotiated
- 6 scopes
Start free, upgrade any time from /werkgever/integraties.
Endpoints
REST
GET /api/public/v1/shifts
Open shifts for your organization. Requires shifts:read.
curl https://www.zekerflex.com/api/public/v1/shifts \
-H "Authorization: Bearer zf_live_..."POST /api/public/v1/shifts
Create a shift and run matching against it. Requires shifts:write.
curl -X POST https://www.zekerflex.com/api/public/v1/shifts \
-H "Authorization: Bearer zf_live_..." \
-H "Content-Type: application/json" \
-d '{
"branchId": "br_123",
"title": "Weekend bediening",
"startsAt": "2026-11-01T16:00:00Z",
"endsAt": "2026-11-01T23:00:00Z",
"hourlyRateCents": 1650,
"positions": 2
}'GET /api/public/v1/timesheets/approved
Approved/paid timesheets for your organization. Requires timesheets:read.
curl https://www.zekerflex.com/api/public/v1/timesheets/approved \
-H "Authorization: Bearer zf_live_..."POST /api/public/v1/webhooks
Register a URL for shift/timesheet/dispute events. Requires webhooks:manage. The signing secret is returned once, in the response — store it immediately.
curl -X POST https://www.zekerflex.com/api/public/v1/webhooks \
-H "Authorization: Bearer zf_live_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhooks/zekerflex",
"eventTypes": ["shift.matched", "timesheet.approved"]
}'Alternative
GraphQL
A read-mostly GraphQL endpoint is available at https://www.zekerflex.com/api/graphql, authenticated with the same session/role system as the dashboard (not API keys) — it's meant for logged-in users and internal tooling, not third-party integrations. Introspect the schema directly against the endpoint to see the full set of queries and types.
For agents
Machine-readable discovery
https://www.zekerflex.com/llms.txt— what ZekerFlex is, when to use it, and links to everything below.https://www.zekerflex.com/openapi.json— the full REST API spec.https://www.zekerflex.com/sitemap.xml— every indexable page.- Homepage and the 404 page both honor
Accept: text/markdownwith a real Markdown body instead of HTML.