External API
The CE-Go API lets you integrate your systems directly with CE-Go — manage users, register attendees for conferences, and download certificates.
In this guide:
- Getting started
- Authentication
- User management
- Conference registration
- Certificates
- Error handling
- Best practices
Getting started
Base URL
All API requests should be made to:
https://your-domain.ce-go.com/api/v3
Before you begin
- You need an active CE-Go account with API access enabled
- Contact your account manager to get your API credentials
- All requests must be authenticated
- All data is scoped to your organization — you can only access your own resources
Authentication
Include your API credentials in the request headers. Your account manager will provide the specific authentication method for your integration.
Important: All endpoints are organization-scoped. You can only access and modify resources that belong to your organization.
User management
Manage users (attendees) within your organization.
Search users
Find users by name, email, phone, or external ID.
GET /api/v3/users/search
📋 View parameters and response
Query parameters:
| Parameter | Type | Description |
|---|---|---|
| first_name | String | Filter by first name |
| last_name | String | Filter by last name |
| String | Filter by email address | |
| phone | String | Filter by phone number |
| external_id | String | Filter by external system identifier |
| limit | Integer | Results per page (default: 20) |
Response: 200 OK
{
"data": [
{
"id": 12345,
"first_name": "John",
"last_name": "Smith",
"email": "john.smith@example.com",
"phone": "5551234567",
"external_id": "EXT-12345",
"address": {
"state": "New York",
"state_code": "NY",
"country": "United States",
"country_code": "USA"
}
}
],
"meta": {
"current_page": 1,
"total": 150
}
}
Get user details
Retrieve full details for a specific user.
GET /api/v3/users/{user_id}
📋 View parameters and response
URL parameters:
| Parameter | Type | Description |
|---|---|---|
| user_id | Integer | Unique identifier for the user |
Response: 200 OK
{
"data": {
"id": 12345,
"first_name": "John",
"last_name": "Smith",
"email": "john.smith@example.com",
"phone": "5551234567",
"external_id": "EXT-12345",
"address": {
"state": "New York",
"state_code": "NY",
"country": "United States",
"country_code": "USA"
}
}
}
Errors:
- 403 Forbidden — User belongs to a different organization
- 404 Not Found — User ID does not exist
Create user
Add a new user (attendee) to your organization.
POST /api/v3/users
📋 View parameters and response
Request body:
| Field | Type | Required | Description |
|---|---|---|---|
| first_name | String | Yes | User's first name |
| last_name | String | Yes | User's last name |
| String | Yes | Valid email (must be unique in your organization) | |
| state_code | String | Yes | 2-character state code (e.g., "NY", "CA") |
| country_code | String | Yes | 3-character country code (e.g., "USA") |
| phone | String | No | Phone number (10-13 digits) |
| external_id | String | No | Your system's identifier for this user |
Example request:
{
"first_name": "John",
"last_name": "Smith",
"email": "john.smith@example.com",
"state_code": "NY",
"country_code": "USA",
"phone": "5551234567",
"external_id": "CRM-12345"
}
Response: 201 Created
{
"data": {
"id": 12345,
"first_name": "John",
"last_name": "Smith",
"email": "john.smith@example.com",
"phone": "5551234567",
"external_id": "CRM-12345",
"address": {
"state": "New York",
"state_code": "NY",
"country": "United States",
"country_code": "USA"
}
}
}
Errors:
- 400 Bad Request — User with this email already exists
- 422 Unprocessable Entity — Missing required fields or invalid data
Update user
Update information for an existing user. All fields are optional — only include what you want to change.
PUT /api/v3/users/{user_id}
📋 View parameters and response
Request body (all optional):
| Field | Type | Description |
|---|---|---|
| first_name | String | User's first name |
| last_name | String | User's last name |
| String | Email address | |
| phone | String | Phone number |
| state_code | String | 2-character state code |
| country_code | String | 3-character country code |
| external_id | String | External system identifier |
Example request:
{
"phone": "5559876543",
"state_code": "CA"
}
Response: 200 OK
{
"data": {
"id": 12345,
"first_name": "John",
"last_name": "Smith",
"email": "john.smith@example.com",
"phone": "5559876543",
"external_id": "CRM-12345",
"address": {
"state": "California",
"state_code": "CA",
"country": "United States",
"country_code": "USA"
}
}
}
Delete user
Remove a user from the system.
DELETE /api/v3/users/{user_id}
📋 View details
Response: 204 No Content (empty response body)
Restrictions:
- Cannot delete users with ADMIN or ORGANIZER roles
- Can only delete users within your organization
Errors:
- 403 Forbidden — Attempting to delete protected roles or users from another organization
- 404 Not Found — User ID does not exist
Conference registration
Register attendees for conferences programmatically.
List membership options
Get available registration types for a conference (e.g., Standard, VIP, Student).
GET /api/v3/conferences/{conference_id}/membership_options
📋 View parameters and response
URL parameters:
| Parameter | Type | Description |
|---|---|---|
| conference_id | Integer | Unique identifier for the conference |
Response: 200 OK
{
"data": [
{
"id": 1,
"name": "Standard Registration",
"price": 199.00,
"description": "Full access to all sessions"
},
{
"id": 2,
"name": "VIP Registration",
"price": 399.00,
"description": "Full access plus exclusive networking events"
},
{
"id": 3,
"name": "Student Registration",
"price": 99.00,
"description": "Discounted rate for students"
}
]
}
Errors:
- 400 Bad Request — Conference does not belong to your organization
- 404 Not Found — Conference ID is invalid
Register attendee
Register an existing user for a conference.
POST /api/v3/conferences/{conference_id}/registration
📋 View parameters and response
Request body:
| Field | Type | Required | Description |
|---|---|---|---|
| user_id | Integer | Yes | ID of the user to register |
| membership_option_id | Integer | Conditional | Required if conference has membership options |
Example request:
{
"user_id": 12345,
"membership_option_id": 1
}
Response: 201 Created
{
"data": {
"id": 67890,
"conference_id": 100,
"user_id": 12345,
"membership_option_id": 1,
"status": "registered",
"payment_status": "paid",
"ce_opted_in": true,
"registered_at": "2025-01-15T10:30:00Z"
}
}
What happens automatically:
- Attendee is marked as "Paid" and "Registered"
- If the conference offers CE credits, attendee is opted-in by default
- Session assignments are synced in the background
Errors:
- 400 Bad Request — "Conference has already started!" or "Attendee already registered!"
- 422 Unprocessable Entity — Invalid user_id or membership_option_id
Typical workflow
- Call
GET .../membership_optionsto get available registration types - User selects their preferred option
- Call
POST .../registrationwith the selectedmembership_option_id
Certificates
Get certificate download URL
Generate a secure, temporary URL to download an attendee's certificate.
GET /api/v3/attendees/{attendee_id}/certificates
📋 View parameters and response
URL parameters:
| Parameter | Type | Description |
|---|---|---|
| attendee_id | Integer | Unique identifier for the conference attendee record |
Response: 200 OK
{
"data": {
"url": "https://api.ce-go.com/conference/certificate/123?auth=eyJhbGciOiJIUzI1..."
}
}
Important:
- The URL contains a temporary authentication token — do not share publicly
- Certificates are available only after the conference ends and attendance is verified
- Attendee must belong to a user in your organization
Errors:
- 403 Forbidden — Attendee belongs to a different organization
- 404 Not Found — Attendee ID does not exist
Error handling
HTTP status codes
| Code | Meaning | Description |
|---|---|---|
| 200 | OK | Request successful |
| 201 | Created | Resource successfully created |
| 204 | No Content | Request successful, no response body |
| 400 | Bad Request | Invalid parameters or business logic violation |
| 401 | Unauthorized | Missing or invalid authentication |
| 403 | Forbidden | Valid credentials but insufficient permissions |
| 404 | Not Found | Resource does not exist |
| 422 | Unprocessable Entity | Validation errors in request data |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Server error — contact support |
Error response format
{
"error": {
"message": "Detailed error message",
"code": "ERROR_CODE",
"fields": {
"field": "Additional context if applicable"
}
}
}
Best practices
- Use external IDs — Store your system's user IDs in the
external_idfield for easy mapping - Check before creating — Use the search endpoint to avoid creating duplicate users
- Handle errors gracefully — Implement proper error handling for all status codes
- Keep certificate URLs secure — They contain sensitive tokens, never log or expose them
- Test first — Always test in a development environment before going to production
- Use pagination — Set appropriate
limitvalues when fetching large lists
Need help?
- Check this documentation for endpoint details and examples
- Review error messages — they often contain helpful details
- Contact your CE-Go account manager for API access questions
- Reach out to technical support for integration assistance
API Version: v3