Overview
This API allows third-party vendors and registration systems to push attendee and registrant records to Cadmium.
An API key is required to consume this web API.
- API keys are unique per third-party vendor
- API access must be contracted by the client
- Most API keys are event-specific; however, multi-event access can be configured upon request
- API keys are issued by Cadmium
Endpoint
Use this endpoint for all methods:
https://integrations.mycadmium.com/webservices/eventScribeAPIs.aspGeneral Requirements
Every request must include the following query parameters:
| Parameter | Description |
|---|---|
APIKey | API key provided by Cadmium. |
Method | Name of the API method being called. |
eID | Required only if the API key is configured for multi-event access. Pass the event ID of the target event. |
Methods
Asset Methods
Favorite Methods
Account Methods
Asset Methods
The getAssets method is deprecated as of version 1.4. For asset-related functionality, refer to the Eventscribe Asset API article.
Favorite Methods
addRemoveFavorite
Use this method to add or remove favorites from a user’s account.
Eventscribe supports two types of favorites:
- Yellow favorites indicate user interest and are user-controlled. Users can add or remove these at any time.
- Blue favorites indicate ticketed purchases (such as a workshop) and cannot be removed by the user.
Pass ticketed: true to create a blue favorite. Omit ticketed or set it to false to create a yellow favorite.
HTTP Method: POST
https://integrations.mycadmium.com/webservices/eventScribeAPIs.aspQuery Parameters
| Name | Value | Description |
|---|---|---|
APIKey | your-api-key | API key provided by Cadmium |
Method | addRemoveFavorite | Method name |
FavoriteMethod | Add or Remove | Indicates whether to add or remove the favorites in the request body |
AccountID | Account ID | Unique Eventscribe account ID |
AccountAssociationID | A third-party ID | For integrated systems, this is the third-party user ID. |
AccountKey | Key identifier | A unique string identifier for an account |
AccountRegID | Registration ID | Registration ID assigned to the user by the registration system |
AccountAssociationKey | Association key | An alternate identifier typically used by AMS software instead of the primary user ID |
eID | Event ID of the event | If the API key has multi-event access, passing eID adds or removes favorites in the requested event ID. |
Headers
| Name | Value |
|---|---|
Content-Type | application/json |
Body Parameters
Pass an array of objects in the request body. Each object represents one favorite to add or remove.
| Name | Type | Description |
|---|---|---|
id | Int | The unique Conference Harvester PresentationID assigned to each presentation. Required if externalID is not provided. |
externalID | String | A unique identifier from an external system. Required if id is not provided. |
ticketed | Boolean | If true, creates a blue favorite that cannot be removed by the user. Omit or set to false for a yellow favorite that the user can remove. |
Request Example
[
{
"id": 691344,
"ticketed": true
},
{
"id": 691346
},
{
"externalID": "14840",
"ticketed": true
}
]Response Example
[
{
"id": 691344,
"ticketed": true,
"Transaction": "INSERT",
"dateAdded": "2/13/2019 5:26:51 PM"
},
{
"id": 691346,
"Transaction": "INSERT",
"dateAdded": "2/13/2019 5:26:51 PM"
},
{
"externalID": "14840",
"ticketed": true,
"Transaction": "INSERT",
"dateAdded": "2/13/2019 5:26:51 PM"
}
]Transaction is returned by the API. Possible values are INSERT, UPDATE, and UNCHANGED. If UNCHANGED is returned, the schedule item matching the id or externalID was not found in the system.
Real-Time Refresh Behavior
| Action | How changes appear |
|---|---|
| Add yellow favorite | Visible after refreshing the screen |
| Remove yellow favorite | Visible after refreshing the screen |
| Add blue favorite | User must log out and log back in |
| Remove blue favorite | Visible after refreshing the screen |
Presentation ID Mapping
The id field expects the Harvester PresentationID, which is the preferred identifier. Third-party systems can retrieve Harvester PresentationIDs from the Education Harvester API or a client-provided report.
If using externalID instead, the client must first add the external IDs to the Education Harvester worksheet by populating the Presentation External ID field for each presentation.
Notes
- Either
idORexternalIDis required in each body object. Do not pass both, and do not pass empty or null values. - Exactly one user identifier is required in the query string:
AccountID,AccountAssociationID,AccountKey,AccountRegID, orAccountAssociationKey. Do not pass more than one. - The system will not duplicate an already existing favorite.
- To remove favorites, set
FavoriteMethodtoRemove. Theticketedvalue is ignored when removing.
Errors
| Condition | Response |
|---|---|
| Account identifier not found | {"error": "Account not found"} |
id or externalID not included in the request body | {"error": "id or externalID is required."} |
| Request body is not a JSON array | {"error": "Bad JSON string. Please make sure the object is inside an array."} |
Account Methods
getAccount
Use this method to return basic information about a user and their favorited sessions and presentations.
HTTP Method: GET
https://integrations.mycadmium.com/webservices/eventScribeAPIs.aspQuery Parameters
| Name | Value | Description |
|---|---|---|
APIKey | your-api-key | API key provided by Cadmium |
Method | getAccount | Method name |
AccountID | Account ID | Unique Eventscribe account ID |
AccountEmail | Account email | User’s email address; can be used in place of AccountID |
AccountAssociationID | A third-party ID | For integrated systems, this is the third-party user ID. |
AccountRegID | Registration ID | For registration system integrations, this is the user’s unique registration ID. |
eID | Event ID of the event | If the API key has multi-event access, passing eID returns data for the requested event ID. |
Response Example
[
{
"AccountID": "10702095",
"AccountRegType": "Registered",
"AccountEmail": "test@testemail.com",
"AccountKey": "XYZABC",
"AccountRegID": "27363",
"AccountAssociationID": "1112264896",
"AccountUnlockCodesPDF": "",
"AccountAccessLevel": "Standard",
"AccountPrefix": "Dr.",
"AccountFirstName": "John",
"AccountMiddleInitial": "",
"AccountLastName": "Doe",
"AccountSuffix": "",
"AccountCredentials": "BVSc, MRCVS",
"AccountAddress1": "",
"AccountAddress2": "",
"AccountAddress3": "",
"AccountCity": "Baltimore",
"AccountState": "MD",
"AccountZip": "21021",
"AccountCountry": "USA",
"AccountPosition": "Head of Surgery",
"AccountOrganization": "Johns Hopkins",
"AccountTelephoneOffice": "14446165511",
"AccountTelephoneCell": "",
"AccountTelephoneHome": "",
"AccountLoginsWebsite": "",
"AccountCustomField1": "",
"AccountCustomField2": "",
"AccountCustomField3": "",
"AccountCustomField4": "",
"AccountCustomField5": "",
"AccountCustomField6": "",
"AccountCustomField7": "",
"AccountCustomField8": "",
"AccountCustomField9": "",
"AccountCustomField10": "",
"AccountBiography": "",
"AccountTwitter": "",
"AccountFacebook": "",
"AccountLinkedIn": "",
"AccountBlog": "",
"AccountWebsite": "",
"Favorites": [
{
"PresID": "193819",
"HarvPresID": "338772"
},
{
"PresID": "193825",
"HarvPresID": "338679"
}
]
}
]Notes
- Either
AccountID,AccountAssociationID, orAccountRegIDis required. PresIDrefers to the Eventscribe PresentationID.HarvPresIDrefers to the Harvester PresentationID. Third-party systems should useHarvPresID.
addUpdateAccount
Use this method to create or update an Eventscribe account. This method accepts an array, so multiple accounts can be created or updated in a single request. To create or update one account, pass an array containing a single object.
HTTP Method: POST
https://integrations.mycadmium.com/webservices/eventScribeAPIs.aspQuery Parameters
| Name | Value | Description |
|---|---|---|
APIKey | your-api-key | API key provided by Cadmium |
Method | addUpdateAccount | Method name |
eID | Event ID of the event | If the API key has multi-event access, passing eID creates or updates the account in the requested event ID. |
Headers
| Name | Value |
|---|---|
Content-Type | application/json |
Body Parameters
Pass an array of account objects. Only send populated fields. When a field has no value, omit or send an empty string rather than null.
| Name | Type | Required | Max Length | Description |
|---|---|---|---|---|
AccountFirstName | String | Yes | 75 | |
AccountLastName | String | Yes | 75 | |
AccountEmail | String | Yes | 75 | |
AccountKey | String | No | 50 | End-users log in with their email address and AccountKey. Clients typically want this value to be the user’s registration ID. If not provided, the API generates an 8-character random key. |
AccountAssociationID | String | No | 50 | A third-party unique ID for the user. If a user with this ID already exists, the API updates that record instead of creating a new one. |
AccountRegID | String | No | 50 | The user’s unique registration ID from the registration system. |
AccountUnlockCodesPDF | String | No | Controls user access to PDF presentation content. Separate multiple values with @@@ (e.g., TUE@@@XYZ@@@123). Clients typically send the same values to AccountUnlockCodesPDF, AccountUnlockCodesAudio, and AccountRegItems. | |
Favorites | Array | No | A list of Harvester PresentationIDs (integers) to add as blue (ticketed) favorites for this user. This method only supports blue favorites. To add yellow favorites, use addRemoveFavorite instead. | |
AccountPrefix | String | No | 50 | |
AccountMiddleInitial | String | No | 50 | |
AccountSuffix | String | No | 50 | |
AccountCredentials | String | No | 200 | |
AccountPosition | String | No | ||
AccountOrganization | String | No | ||
AccountTelephoneOffice | String | No | 50 | |
AccountTelephoneCell | String | No | 50 | |
AccountKey2 | String | No | 50 | |
AccountAccessLevel | String | No | 50 | Case-sensitive. Accepted values: Basic, Standard, or Premium. Used to restrict site navigation and broader areas of the site to groups of users such as press or exhibitors. |
AccountAddress1 | String | No | ||
AccountAddress2 | String | No | ||
AccountAddress3 | String | No | ||
AccountCity | String | No | 150 | |
AccountState | String | No | 50 | |
AccountCountry | String | No | 50 | |
AccountZip | String | No | 50 | |
AccountAssociationKey | String | No | 250 | |
AccountCustomField1 | String | No | ||
AccountCustomField2 | String | No | ||
AccountCustomField3 | String | No | ||
AccountCustomField4 | String | No | ||
AccountCustomField5 | String | No | ||
AccountCustomField6 | String | No | ||
AccountCustomField7 | String | No | ||
AccountCustomField8 | String | No | ||
AccountCustomField9 | String | No | ||
AccountCustomField10 | String | No | ||
AccountRegType | String | No | 50 | |
AccountASort | String | No | 100 | |
AccountUnlockCodesAudio | String | No | Controls user access to audio presentation content. Separate multiple values with @@@. Clients typically send the same values as AccountUnlockCodesPDF and AccountRegItems. | |
AccountRegItems | String | No | Controls user access to evaluation tasks in Survey Magnet. Separate multiple values with @@@. Clients typically send the same values as AccountUnlockCodesPDF and AccountUnlockCodesAudio. |
Request Example
[
{
"AccountPrefix": "Dr.",
"AccountFirstName": "John",
"AccountLastName": "Doe",
"AccountSuffix": "Jr.",
"AccountEmail": "email@me.com",
"AccountPosition": "CEO",
"AccountOrganization": "Microsoft",
"AccountTelephoneOffice": "5556865656",
"AccountTelephoneCell": "5556865656",
"AccountKey": "123456",
"AccountRegID": "843633",
"AccountAccessLevel": "Standard",
"AccountAddress1": "123 Main St.",
"AccountAddress2": "Suite 101",
"AccountAddress3": "",
"AccountCity": "Bel Air",
"AccountState": "Maryland",
"AccountCountry": "United States",
"AccountZip": "21015",
"AccountAssociationID": "123456",
"Favorites": [1111, 2222, 3333, 4444]
}
]Success Response Example
[
{
"AccountPrefix": "Dr.",
"AccountFirstName": "John",
"AccountLastName": "Doe",
"AccountSuffix": "Jr.",
"AccountEmail": "email@me.com",
"AccountPosition": "CEO",
"AccountOrganization": "Microsoft",
"AccountTelephoneOffice": "5556865656",
"AccountTelephoneCell": "5556865656",
"AccountAccessLevel": "Standard",
"AccountAddress1": "123 Main St.",
"AccountAddress2": "Suite 101",
"AccountAddress3": "",
"AccountCity": "Bel Air",
"AccountState": "Maryland",
"AccountCountry": "United States",
"AccountZip": "21015",
"AccountAssociationID": "123",
"Favorites": [552210, 552192, 551496, 552047],
"AccountID": 17660302,
"Transaction": "UPDATE",
"AccountKey": "NMCV7491",
"FavoriteCount": 4
}
]The API returns the AccountID and AccountKey for the created or updated user, the Transaction type (INSERT or UPDATE), and the total FavoriteCount.
Batch Error Behavior
IMPORTANT NOTE
If any account in a batch fails, the overall HTTP response is 400 — but this does not mean all accounts failed. Valid accounts in the same request are still created or updated. Always inspect the individual results in the response body to determine which accounts succeeded and which failed.
The endpoint processes each account in the batch independently and returns one result per submitted account, matched by position. Successes and failures can appear in the same response. A failure on one account does not roll back any others.
Mixed Batch Response Example
Request — two accounts, the second missing a required last name:
[
{ "AccountRegID": "REG-1001", "AccountFirstName": "Ada", "AccountLastName": "Lovelace", "AccountEmail": "ada@example.com" },
{ "AccountRegID": "REG-1002", "AccountFirstName": "Alan", "AccountEmail": "alan@example.com" }
]Response — HTTP 400. The first account was created; the second was rejected.
[
{
"AccountID": 12345,
"Transaction": "INSERT",
"AccountKey": "abc123"
},
{
"error": "First name, Last name, and email are required fields."
}
]Notes
AccountFirstName,AccountLastName, andAccountEmailare required.- When updating an existing account, the system matches records in this priority order:
AccountID→AccountAssociationID→AccountRegID. - If two records in the same batch share the same
AccountID, both will update the same account. The last record in the batch takes precedence.
Errors
| Condition | Response |
|---|---|
| Required field missing | "First name, Last name, and email are required fields." |
| Field value exceeds maximum length | "String or binary data would be truncated." |
| Duplicate email address | "An account with email '{value}' already exists in this event. Please verify that the account identifier provided (AccountID, AccountAssociationID, or AccountRegID) matches the value previously associated with this email address." |
Duplicate AccountAssociationID (only when AccountID is also provided) | "An account with AccountAssociationID '{value}' already exists in this event. Please verify that the AccountID provided matches the value previously associated with this AccountAssociationID." |
cancelAccount
Use this method to cancel an account. Canceled accounts are recoverable from the Focus → Deleted view of the Users list.
HTTP Method: GET
https://integrations.mycadmium.com/webservices/eventScribeAPIs.aspQuery Parameters
| Name | Value | Description |
|---|---|---|
APIKey | your-api-key | API key provided by Cadmium |
Method | cancelAccount | Method name |
AccountID | Account ID | Unique Eventscribe account ID |
AccountAssociationID | A third-party ID | For integrated systems, this is the third-party user ID. |
AccountKey | Key identifier | A unique string identifier for an account |
AccountRegID | Registration ID | Registration ID assigned to the user by the registration system |
eID | Event ID of the event | If the API key has multi-event access, passing eID cancels the account in the requested event ID. |
Response Example
{"success": "Account was successfully canceled."}Notes
- Either
AccountID,AccountAssociationID,AccountRegID, orAccountKeyis required. - Internally,
cancelAccountanddeleteAccountperform the same operation. Accounts are soft-deleted and can be restored.
deleteAccount
Use this method to delete an account. Deleted accounts are recoverable from the Focus → Deleted view of the Users list.
HTTP Method: GET
https://integrations.mycadmium.com/webservices/eventScribeAPIs.aspQuery Parameters
| Name | Value | Description |
|---|---|---|
APIKey | your-api-key | API key provided by Cadmium |
Method | deleteAccount | Method name |
AccountID | Account ID | Unique Eventscribe account ID |
AccountAssociationID | A third-party ID | For integrated systems, this is the third-party user ID. |
AccountKey | Key identifier | A unique string identifier for an account |
AccountRegID | Registration ID | Registration ID assigned to the user by the registration system |
eID | Event ID of the event | If the API key has multi-event access, passing eID deletes the account in the requested event ID. |
Response Example
{"success": "Account was successfully deleted."}Notes
- Either
AccountID,AccountAssociationID,AccountRegID, orAccountKeyis required. - Internally,
cancelAccountanddeleteAccountperform the same operation. Accounts are soft-deleted and can be restored.
Error Handling
Errors are returned as JSON objects. The following errors may be returned across API methods.
IMPORTANT NOTE
When submitting a batch to addUpdateAccount, the endpoint processes each record independently. If any record fails, the overall HTTP response is 400 — but valid records in the same request are still created or updated. Always inspect the individual results in the response body to determine which records succeeded and which failed. A failure on one record does not roll back any others.
| Method | Condition | Response |
|---|---|---|
addRemoveFavorite | Account identifier not found | {"error": "Account not found"} |
addRemoveFavorite | id or externalID not included in the request body | {"error": "id or externalID is required."} |
addRemoveFavorite | Request body is not a JSON array | {"error": "Bad JSON string. Please make sure the object is inside an array."} |
addUpdateAccount | Required field missing | "First name, Last name, and email are required fields." |
addUpdateAccount | Field value exceeds maximum length | "String or binary data would be truncated." |
addUpdateAccount | Duplicate email address | "An account with email '{value}' already exists in this event. Please verify that the account identifier provided (AccountID, AccountAssociationID, or AccountRegID) matches the value previously associated with this email address." |
addUpdateAccount | Duplicate AccountAssociationID (only when AccountID is also provided) | "An account with AccountAssociationID '{value}' already exists in this event. Please verify that the AccountID provided matches the value previously associated with this AccountAssociationID." |
Guide for Pushing to the Eventscribe Website/Mobile App (Attendees) API
Best Practices
- Treat the registration system as the source of truth. Push updates whenever registrant data changes.
- Push only changed fields to avoid unintentionally overwriting existing data with blank values.
- Use the Harvester PresentationID (
id) whenever possible when managing favorites. - Send only one account identifier per request.
- Test both yellow and blue favorite behavior before going live, as they refresh differently for the end-user.
Survey Magnet Considerations
Users pushed to Eventscribe will sync with Survey Magnet. Review the following before configuring your integration:
- If the client plans to use evaluation tasks (for example, separating In-Person vs. Virtual attendees), pass the appropriate values in
AccountRegItems. - Only a single unlock code per evaluation is supported. Multiple unlock codes per evaluation are not supported in Survey Magnet.
- Survey Magnet does not support user access levels.
AccountAccessLevelvalues set in Eventscribe do not carry over. - Custom Eventscribe fields (
AccountCustomField1–AccountCustomField10) do not sync to Survey Magnet.
Client Expectations
- Cadmium does not provide development services. All development is completed by the client’s in-house development team or their third-party vendor.
- The client is responsible for working with their third-party vendor to decide which available API fields to push data to.
- The third-party vendor is responsible for reading and understanding the API documentation and its available methods.
- The client is responsible for reviewing and testing all incoming data to verify accuracy, and for testing the full end-user experience.
Cadmium Project Manager Expectations
The Cadmium Project Manager (PM) should discuss with the client and third-party vendor which values to push to AccountAccessLevel, AccountUnlockCodesPDF, AccountUnlockCodesAudio, and AccountRegItems, based on what the client wants to restrict in Eventscribe and Survey Magnet. This is similar to how these values would be configured during a data import.
Resources
- Registration & Access Grid Instructions — learn more about access levels, unlock codes, and reg items
- Login & Customer Support Instructions — best practices for updating end-user communications, including Cadmium login pages
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article