Attendees API

Retrieve attendee details for integration with external platforms.

The Attendees API allows authenticated integrations to fetch attendee details after they register for events. This is useful for platforms that use CANSKAN as their registration provider and need to sync attendee data.

Get Attendee by ID

Retrieve attendee details by their unique identifier.

Endpoint: GET /api/attendees/{id}

Authentication: Required (API Token)

Request

Path Parameters

Parameter Type Required Description
id UUID Yes The unique identifier of the attendee

Success Response

Status: 200 OK

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "John Doe",
    "email": "john@example.com",
    "status": "confirmed",
    "registered_at": "2025-12-10T10:30:00Z",
    "checked_in_at": null,
    "event": {
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "name": "Laravel Cebu December Meetup",
      "starts_at": "2025-12-15T18:00:00Z",
      "ends_at": "2025-12-15T21:00:00Z",
      "location": "Cebu City"
    }
  }
}

Response Fields

Field Type Description
id string Unique identifier (UUID) of the attendee
name string Full name of the attendee
email string Email address of the attendee
status string Registration status: pending, confirmed, canceled, or no_show
registered_at string ISO 8601 timestamp when the attendee registered
checked_in_at string|null ISO 8601 timestamp when checked in, or null if not checked in
event.id string UUID of the event
event.name string Name of the event
event.starts_at string|null ISO 8601 timestamp when the event starts
event.ends_at string|null ISO 8601 timestamp when the event ends
event.location string|null Location of the event

Error Responses

401 Unauthorized - Missing or invalid API token

{
  "message": "API token required."
}

403 Forbidden - Token doesn't have access to this attendee's event

{
  "message": "Access denied."
}

404 Not Found - Attendee doesn't exist or doesn't belong to your organization

{
  "message": "Attendee not found."
}

Integration Use Case

This endpoint is designed for external platforms that use CANSKAN for event registration. A typical integration flow:

  1. Configure Event: Set a redirect_url on your CANSKAN event (e.g., https://yourapp.com/callback?code={code})

  2. User Registers: User registers for the event on CANSKAN

  3. Redirect: After registration, user is redirected to your URL with the attendee ID as the code parameter

  4. Fetch Details: Your application calls this API to fetch the attendee's information

  5. Sync Data: Store the attendee data in your own system

Example Callback Handler

Cancel Attendee Registration

Cancel an attendee's registration for an event.

Endpoint: POST /api/events/{event_id}/attendees/{attendee_id}/cancel

Authentication: Required (API Token)

Request

Path Parameters

Parameter Type Required Description
event_id UUID Yes The unique identifier of the event
attendee_id UUID Yes The unique identifier of the attendee

Success Response

Status: 200 OK

{
  "message": "Registration cancelled successfully."
}

Error Responses

401 Unauthorized - Missing or invalid API token

{
  "message": "API token required."
}

404 Not Found - Attendee or event not found

{
  "message": "Attendee not found."
}

422 Unprocessable Entity - Cannot cancel (already checked in or cancelled)

{
  "message": "Cannot cancel registration. Attendee has already checked in."
}

Mark Attendee as No-Show

Mark an attendee as a no-show when they don't attend the event.

Endpoint: POST /api/events/{event_id}/attendees/{attendee_id}/no-show

Authentication: Required (API Token)

Request

Path Parameters

Parameter Type Required Description
event_id UUID Yes The unique identifier of the event
attendee_id UUID Yes The unique identifier of the attendee

Success Response

Status: 200 OK

{
  "message": "Attendee marked as no show.",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "no_show"
  }
}

Error Responses

401 Unauthorized - Missing or invalid API token

{
  "message": "API token required."
}

404 Not Found - Attendee or event not found

{
  "message": "Attendee not found."
}

422 Unprocessable Entity - Cannot mark as no-show

{
  "message": "Cannot mark as no show. Attendee has already checked in."
}

Bulk Mark No-Show

Mark multiple attendees as no-show in a single request.

Endpoint: POST /api/events/{event_id}/attendees/bulk-no-show

Authentication: Required (API Token)

Request

Path Parameters

Parameter Type Required Description
event_id UUID Yes The unique identifier of the event

Request Body

Field Type Required Description
attendee_ids array Yes Array of attendee UUIDs to mark as no-show

Success Response

Status: 200 OK

{
  "message": "3 attendees marked as no show.",
  "success_count": 3,
  "failed_count": 0
}

Partial Success Response

When some attendees cannot be marked (e.g., already checked in):

{
  "message": "2 attendees marked as no show.",
  "success_count": 2,
  "failed_count": 1,
  "failed": [
    {
      "id": "6ba7b811-9dad-11d1-80b4-00c04fd430c8",
      "reason": "Already checked in"
    }
  ]
}

Error Responses

401 Unauthorized - Missing or invalid API token

{
  "message": "API token required."
}

422 Validation Error - Invalid request body

{
  "message": "The given data was invalid.",
  "errors": {
    "attendee_ids": ["The attendee_ids field is required."]
  }
}

Rate Limits

Request Type Rate Limit
Authenticated 60 requests/minute