Fuxam API v4
Fuxam API v4
Industry-standard public REST API with cursor pagination, RFC 7807 errors with machine-readable codes, sparse fieldsets, and idempotent creates.
Migration from v3
| Area | v3 | v4 |
|---|---|---|
| Base path | /api/v3 |
/api/v4 |
| Courses | addressed by code in path |
addressed by id; use GET /courses?code= |
| Lists | page / pageSize |
cursor / limit with pagination.next_cursor |
| Content block lists | { contentBlocks: [...] } |
{ data: [...] } |
| Creates | no idempotency | Idempotency-Key header required on POST |
| Errors | RFC 7807 | RFC 7807 + stable code field (e.g. validation_failed) |
| Auth | Basic Auth clientId:clientSecret |
unchanged |
v3 remains available until the published Sunset date (see response headers). Bug-fixes only on v3 after v4 GA.
Authentication
All endpoints require Basic Auth using integration credentials:
Authorization: Basic <base64-encoded-clientId:clientSecret>
Interactive documentation (Try it)
Use the same origin as the app you are testing (so cookies and CORS match the deployment you mean).
-
Scalar (full reference) — open
/api/v4/docson your environment (for examplehttps://fuxam.app/api/v4/docsorhttps://fuxam.appapi/v4/docs). The spec is loaded from/api/v4/openapi. Under Servers, select the base URL that points at that same environment (for local runs usehttps://fuxam.appapi/v4). Open Authentication → Basic Auth: set username to your integration client ID and password to your client secret (from Organization → API integrations in the dashboard). -
Docs hub (by tag) — browse
/en/docsor/de/docsfor the same operations with the embedded playground; set the server URL and Basic Auth the same way.
Response Format
Success (single resource)
{
"data": { ... },
"meta": { "requestId": "req_...", "timestamp": "...", "version": "v4" }
}
Success (list)
{
"data": [ ... ],
"pagination": { "next_cursor": "...", "has_more": true, "limit": 10 },
"meta": { "requestId": "req_...", "timestamp": "...", "version": "v4" }
}
Error (RFC 7807)
{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_..."
}
HTTP status codes
| Status | When |
|---|---|
| 400 | Malformed JSON body, missing Idempotency-Key, invalid cursor encoding, or delete blocked by foreign-key relations |
| 401 | Missing or invalid Basic Auth credentials |
| 404 | Resource not found (or not accessible in your institution) |
| 409 | Conflict — duplicate unique field, idempotency key reused with a different request body |
| 422 | Request validation failed — invalid or out-of-range query/body fields. Response includes an errors array with field and message per issue |
| 429 | Rate limit exceeded |
422 vs 400: Use 422 for semantic validation (Zod schema failures, e.g. invalid limit, missing required fields, date format without timezone offset). Use 400 for transport-level issues (unparseable JSON, bad cursor token).
Query conventions:
limitmust be an integer between 1 and 100 (default 10). Out-of-range or non-numeric values return 422.- Boolean filters (e.g.
includeInactive,showArchived) must be the string"true"or"false". date-timerequest fields must include a timezone offset (Zor±HH:MM).
https://fuxam.app/api/v4Users
Core profile, membership, lifecycle, and institution demographics
- GETList users
- POSTCreate a user
- GETGet a user
- DELETERemove a user from the institution
- PATCHUpdate a user
- PATCHUpdate user activity
- GETList user notes
- POSTAdd a note
- DELETEDelete a note
- PATCHUpdate a note
Users/Roles & access
Institution roles, scoped role grants, primary role, and access packages
- GETList institution roles
- GETList user role assignments
- POSTAssign a role to a user
- DELETERevoke a role assignment
- PUTSet primary organisation role
- POSTAssign an access package to a user
- DELETERevoke an access package from a user
Users/Data fields
Custom data field values and collection requests
Users/Invites
Pending invites and resend
Users/Contact details
Emails, phones, and addresses
- GETList user emails
- POSTAdd an email
- DELETEDelete an email
- PATCHUpdate an email
- GETList user phones
- POSTAdd a phone
- DELETEDelete a phone
- PATCHUpdate a phone
- GETList user addresses
- POSTAdd an address
- DELETEDelete an address
- PATCHUpdate an address
Room Management
Rooms, locations, amenities, and utilization statistics.
- GETList rooms
- POSTCreate a room
- GETGet a room
- DELETEDelete a room
- PATCHUpdate a room
- GETGet utilization data for a room
- GETList locations
- POSTCreate a location
- GETGet a location
- DELETEDelete a location
- PATCHUpdate a location
- GETList amenities
- POSTCreate an amenity
- GETGet an amenity
- DELETEDelete an amenity
- PATCHUpdate an amenity
Campus Management/Organization terms
Institution-wide academic terms (semesters). Used by curriculum version term mappings and cohort scheduling. Distinct from curriculum version terms under /curricula/.../versions/.../terms.
- GETList organization terms
- POSTCreate an organization term
- GETGet an organization term
- DELETEDelete an organization term
- PATCHUpdate an organization term
Users/User groups
User groups and group memberships
- GETList user groups
- POSTCreate a user group
- GETGet a user group
- DELETEDelete a user group
- PATCHUpdate a user group
- GETList members of a user group
- POSTAdd members to a user group
- DELETERemove a member from a user group
- GETList groups a user belongs to
Campus Management/Modules
Course modules and their versions (create, read, update, archive). List responses include summary fields; use GET by ID for full detail.
- GETList modules
- POSTCreate a module
- GETGet a module
- DELETEDelete a module
- PATCHUpdate a module
- PATCHArchive or unarchive a module
- GETList versions of a module
- POSTCreate a module version
- GETGet a module version
- DELETEDelete a module version
- PATCHUpdate a module version
Campus Management/Module groups
Groups of module versions. Optional moduleIds on create/update attach modules by resolving each module’s default version.
- GETList module groups
- POSTCreate a module group
- GETGet a module group
- DELETEDelete a module group
- PATCHUpdate a module group
Campus Management/Curricula
Curricula and versions: curriculum CRUD, version management, study terms, module-to-term mappings, and elective pathways. Optional moduleIds on create/update attach modules to the default version.
- GETList curricula
- POSTCreate a curriculum
- GETGet a curriculum
- DELETEDelete a curriculum
- PATCHUpdate a curriculum
- PATCHArchive or unarchive a curriculum
- GETList curricula versions
- POSTCreate a curricula version
- GETGet a curricula version
- DELETEDelete a curricula version
- PATCHUpdate a curricula version
- GETList terms in a curricula version
- POSTCreate a term in a curricula version
- DELETEDelete a term from a curricula version
- PATCHUpdate a term in a curricula version
- GETList pathways in a curricula version
- POSTCreate a pathway in a curricula version
- DELETEDelete a pathway from a curricula version
- PATCHUpdate a pathway in a curricula version
Campus Management/Study programs
Study programs (Bachelor, Master, etc.) including versions, cohorts, cohort members, connected curricula, and responsible users.
- GETList study programs
- POSTCreate a study program
- GETGet a study program
- DELETEDelete a study program
- PATCHUpdate a study program
- GETList study program versions
- POSTCreate a study program version
- GETGet a study program version
- DELETEDelete a study program version
- PATCHUpdate a study program version
- GETList cohorts of a study program
- POSTCreate a cohort for a study program
- GETGet a cohort
- DELETEDelete a cohort
- PATCHUpdate a cohort
- GETList cohort members
- POSTAdd members to a cohort
- DELETERemove a member from a cohort
Campus Management/Continuing education
Continuing education programs (type=CONTINUING_EDUCATION) — same capabilities as study programs: CRUD, versions, cohorts, curriculum attachment, and cohort members.
- GETList continuing education programs
- POSTCreate a continuing education program
- GETGet a continuing education program
- DELETEDelete a continuing education program
- PATCHUpdate a continuing education program
- GETList continuing education program versions
- POSTCreate a continuing education program version
- GETGet a continuing education program version
- DELETEDelete a continuing education program version
- PATCHUpdate a continuing education program version
- GETList cohorts of a continuing education program
- POSTCreate a cohort for a continuing education program
- GETGet a cohort
- DELETEDelete a cohort
- PATCHUpdate a cohort
- GETList cohort members
- POSTAdd members to a cohort
- DELETERemove a member from a cohort
Courses
Course resources and completion certificates
- GETLook up course completion certificates
- GETList courses
- POSTCreate a course
- GETGet a course by ID
- DELETEDelete a course
- PATCHUpdate a course
- POSTAdd tags to a course
- POSTEnroll users in a course
Appointments
Appointments and scheduling. Course IDs: list/create bodies use layer IDs (layerId from GET /courses), not course entity id. Use course entity id only in /courses/{id}/appointments. Create: appointments are recorded under an institution admin/moderator as creator (not the integration itself). Online/hybrid: isOnline and isHybrid may be adjusted server-side from rooms, address, and onlineAddress. Not supported via API: recurring series creation, attendance, appointment-type listing.
- GETList appointments for a course
- POSTCreate an appointment for a course
- GETList appointments
- POSTCreate an appointment
- GETGet an appointment by ID
- DELETEDelete an appointment
- PATCHUpdate an appointment
Courses/Content blocks
Content blocks, conditions, and progress tracking
- GETList content blocks
- POSTCreate a content block
- POSTBulk create content blocks
- DELETEBulk delete content blocks
- PATCHBulk update content blocks
- GETGet a content block by ID
- DELETEDelete a content block
- PATCHUpdate a content block
- GETList conditions for a content block
- POSTCreate a condition for a content block
- DELETEDelete a condition
- PATCHUpdate a condition
- GETGet progress for a user on a content block
- PATCHUpdate progress for a user on a content block
- POSTReset progress for a user on a content block
- GETList sections and content blocks in a course
- PUTReorder content blocks in a course
Courses/Workbenches
Workbench resources
Courses/User progress
User progress across course content