CRM+ API

The Kindertales CRM+ API enables organizations to integrate their existing systems with Kindertales, automating the creation of inquiries and adding families to the waitlist.

The Kindertales CRM+ API is a premium feature available to CRM+ subscribers.

Key Features:

  • Create Inquiries: Automatically send new inquiry data to Kindertales, reducing manual entry and ensuring leads are captured efficiently.
  • Add Families to the Waitlist: Submit waitlist requests programmatically, ensuring families are placed in the appropriate queue for enrollment consideration.

Getting Started:

  1. Request API Access: To use the API, your organization must be subscribed to CRM+. If you are interested in enabling API access, please contact Kindertales support.
  2. Obtain API Credentials: Once API access is granted, you will receive uuid's for your organization and locations. These credentials are required to authenticate requests to the API.
  3. Integrate with Your System: Use the provided API endpoint to connect your system with Kindertales. You will be able to send inquiry and waitlist data directly from your CRM or website into Kindertales.

API Usage Guidelines:

  • Authentication: API authentication requires a valid uuid for both client and location, which must be included in all requests.
  • Data Formatting: Ensure that inquiry and waitlist data follow the required format outlined in the API documentation.
  • Monitoring: Regularly monitor API responses to confirm successful data submission.

Example: Creating an Inquiry

Base URL: https://crm-api.kindertales.com/

To create an inquiry, send a POST request to the /public/crm/inquiries endpoint with the following parameters:

Headers

Key Required Type Description
client_id Yes UUID UUID for Organization, provided by Kindertales

Payload

Key Required Type Description
waitlist Yes Object The inquiry data for the waitlist inquiry
metaData Optional Object The additional custom metadata from the inquiry form

Waitlist Object Structure

The waitList data passed in the API contains the details of the user and the children submitting the inquiry. Each location is a separate entry in the list.

Key Required Type Description
parentFirstName Yes String The parent / user’s first name
parentLastName Yes String The parent / user’s last name
relationship Yes String

The user’s relationship to the child(ren)

Accepted values:

  • Father
  • Mother
  • Grandfather
  • Grandmother
  • Guardian
  • Joint Custody
  • Other
email Yes String The user’s email address
phone Yes String The user’s phone number
locationIds Yes Array The selected locationId(s) for inquiry
children Yes Array The child(ren) being signed up

Child Object Structure

The user can submit information for multiple children in the inquiry form.

Key Required Type Description
firstName Yes String Child first name
lastName Yes String Child last name
dob Yes String Child’s Date of Birth (YYYY-MM-DD)
gender Yes String

The child’s gender. Accepted values:

  • male
  • female
  • other
  • unknown
requestedStartDate Yes String Requested start date for the child (YYYY-MM-DD)

Example Request:

  curl -X POST "https://crm-api.kindertales.com/public/crm/inquiries" \
       -H "Content-Type: application/json" \
       -H "client_id: 550e8400-e29b-41d4-a716-446655440000" \
       -d '{
         "waitList": {
           "parentFirstName": "John",
           "parentLastName": "Doe",
           "relationship": "Father",
           "email": "john.doe@example.com",
           "phone": "4161234567",
           "locationIds": [
                "8ce2c379-930f-45e6-af48-fa937e7b975f",
                "be51e29b-82bf-4d9a-8cc3-c9dae4aeee9d"
            ],
           "children": [
             {
               "firstName": "Jane",
               "lastName": "Doe",
               "dob": "2023-01-01",
               "gender": "female",
               "requestedStartDate": "2024-01-01"
             }
           ]
         },
         "metaData": {
           "owned platforms": "Xbox,Playstation,PC",
           "planned join date": "",
           "tell us about yourself": "test test",
           "Lead owner": "gamertikes@gmail.com",
           "utm_source": "",
           "utm_medium": "",
           "utm_campaign": "",
           "utm_term": "",
           "utm_content": ""
         }
       }'
    

Example Responses:

A successful response (2xx) will return a boolean:

{
"success": true
}

A Validation Error Response (4xx) will return its code and an array of error messages, helping your troubleshoot:

{
"statusCode": 400,
    "message": [
        "waitList.parentLastName should not be empty",
        "waitList.parentLastName must be a string",
        "waitList.email must be an email",
        "waitList.children.0.requestedStartDate must be a valid ISO 8601 date string",
        "waitList.Relationship must be one of the following values: Father, Mother, Grandfather, Grandmother, Guardian, Joint Custody, Other"
    ],
    "timestamp": "2025-02-04T15:34:08.003Z",
    "path": "/crm/inquiries",
    "method": "POST"
}

An Internal Server Error (5xx) will return a boolean:

{
"success": false
}