DashboardAPI Docs

Nexus Clinical REST API

Pull your event and registration data programmatically. Available on the Elite organizer plan.

Elite tier requiredv1.0

Base URL

https://nexusclinical.com/api/v1

Authentication

All requests must include an Authorization header with your API key as a Bearer token:

Authorization: Bearer nxk_<your-api-key>
Keep your API key secret. Never expose it in client-side code or commit it to version control. Generate and manage keys from Dashboard → API Keys.

Rate Limiting

1,000

Requests per hour

Independent

Per API key

On 429

Retry-After header

When the limit is exceeded, the API returns HTTP 429 with a Retry-After: 3600 header. The counter resets every hour.

Endpoints

GEThttps://nexusclinical.com/api/v1/events

List all events for the authenticated organizer.

Query Parameters

pagenumberPage number (default: 1)
limitnumberResults per page, max 100 (default: 20)

Example Response

{
  "data": [
    {
      "id": "uuid",
      "title": "CME Conference 2025",
      "event_type": "conference",
      "start_date": "2025-09-15T09:00:00Z",
      "end_date": "2025-09-17T17:00:00Z",
      "location": "Chicago, IL",
      "is_virtual": false,
      "is_published": true,
      "price": 299.00,
      "cme_credits": 12
    }
  ],
  "pagination": {
    "page": 1, "limit": 20, "total": 4, "total_pages": 1
  }
}
GEThttps://nexusclinical.com/api/v1/events/:id

Get full details for a single event.

Example Response

{ "data": { /* full event object */ } }
GEThttps://nexusclinical.com/api/v1/events/:id/registrations

List all registrations for an event.

Query Parameters

typestringFilter by type: attendee | sponsor | volunteer
registered_afterISO8601Only registrations after this timestamp
pagenumberPage number
limitnumberResults per page, max 100

Example Response

{
  "data": [
    {
      "id": "uuid",
      "type": "attendee",
      "registered_at": "2025-08-01T14:22:00Z",
      "checked_in_at": null,
      "payment_status": "paid",
      "amount_paid": 299.00,
      "attendee": {
        "id": "uuid",
        "name": "Dr. Sarah Chen",
        "email": "s.chen@hospital.org",
        "specialty": "Cardiology",
        "organization": "Mass General Hospital"
      }
    }
  ],
  "pagination": { "page": 1, "limit": 50, "total": 83, "total_pages": 2 }
}
GEThttps://nexusclinical.com/api/v1/events/:id/sponsors

List all confirmed sponsors for an event.

Query Parameters

pagenumberPage number
limitnumberResults per page, max 100

Example Response

{
  "data": [
    {
      "id": "uuid",
      "registered_at": "2025-07-15T10:00:00Z",
      "payment_status": "paid",
      "amount_paid": 5000.00,
      "sponsor": {
        "id": "uuid",
        "company": "Medtronic",
        "contact_name": "James Wilson",
        "email": "j.wilson@medtronic.com",
        "tier": "enterprise"
      }
    }
  ],
  "pagination": { "page": 1, "limit": 50, "total": 3, "total_pages": 1 }
}
GEThttps://nexusclinical.com/api/v1/registrations/:id

Get details for a single registration.

Example Response

{ "data": { /* full registration object */ } }

Webhook Payload Format

When using the Outbound Webhook or Zapier integrations, Nexus sends the following JSON payload:

{
  "event": "registration.completed",
  "timestamp": "2025-09-15T14:22:00Z",
  "nexus_event_id": "uuid",
  "nexus_event_name": "Annual Cardiology CME 2025",
  "registration": {
    "id": "uuid",
    "type": "attendee",
    "registered_at": "2025-09-15T14:22:00Z",
    "attendee": {
      "name": "Dr. Sarah Chen",
      "email": "s.chen@hospital.org",
      "phone": null,
      "organization": "Mass General Hospital",
      "role": "attendee",
      "custom_fields": {}
    }
  },
  "meta": {
    "nexus_version": "1.0",
    "organizer_id": "uuid"
  }
}
Verifying webhook signatures: Each request includes X-Nexus-Signature: sha256=HMAC. Compute HMAC-SHA256(request_body, your_webhook_secret) and compare using a constant-time comparison.

Error Codes

200OK
201Created
400Bad Request — missing or invalid parameters
401Unauthorized — missing, invalid, or expired API key
403Forbidden — insufficient tier or accessing another organizer's data
404Not Found — resource doesn't exist or doesn't belong to you
429Too Many Requests — 1,000 requests/hour limit exceeded
500Internal Server Error