NAV Navbar
Logo
http

Overview

This describes the resources that make up the official CrazyCall REST API. If you have any problems or requests please chat with us or send an email at support@crazycall.com - we’re there for you 24/7.

Errors

Example request:

PUT /api/v1/users/1234567/disable HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 20

[ "USER_NOT_EXIST" ]

CrazyCall uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a charge failed, etc.), and codes in the 5xx range indicate an error with our servers (these are rare).

Error Code Meaning
400 Bad Request – There was something wrong with your request
401 Unauthorized – Your API key is wrong
403 Forbidden – You don’t have permissions to access this resource
404 Not Found – The specified resource could not be found
405 Method Not Allowed – You tried to access data with an invalid method
406 Not Acceptable – You requested a format that isn’t json
500 Internal Server Error – We had a problem with our server. Try again later.
503 Service Unavailable – We’re temporarily offline for maintenance. Please try again later.


In addition, in response body we send an array of error codes, which describe what went wrong.

Authentication

Example of authenticated request:

GET /api/v1/path/to/resource HTTP/1.1
x-api-token: your-secret-api-key
Account: abcdef.crazycall.com
Host: api.crazycall.com

When using API, you have to authenticate your requests using an API key. You can generate one in the developer’s section of our application. It represents your account, so you should keep it secret!


Also you need to include an Account header in all your requests. You can see your account’s name in developer’s section.


Header Description
x-api-token Your secret api key generated from app.crazycall.com page
Account Your account identifier

Convention

All request parameters (query string) are optional unless stated otherwise.

Users

Every operation in CrazyCall is performed by users or on behalf of users. User can be assigned different roles, and roles can have various permissions.

Retrieve all users

Example request:

GET /api/v1/users HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 425

[ {
  "id" : 77,
  "username" : "john.doe@example.com",
  "name" : "John",
  "surname" : "Doe",
  "roleId" : 77,
  "role" : "Owner",
  "enabled" : true,
  "doNotAcceptIncomingCalls" : false,
  "missedIncomingCallsNotification" : false,
  "state" : "ACTIVE"
}, {
  "id" : 5687329249492653509,
  "username" : "inviteduser@email.com",
  "roleId" : 77,
  "role" : "Owner",
  "privatePhoneNumber" : null,
  "state" : "PENDING"
} ]

You can get all users assigned to your account as list.

Response results
Path Type Description
[] Array All active users
[].id Number User’s id
[].username String User’s username (typically email)
[].name String Name given in registration
[].surname String Surname given in registration
[].roleId Number Id which identify user’s role
[].role String Role name
[].enabled Boolean Detect if user is enabled
[].state String Current user’s state
[].doNotAcceptIncomingCalls Boolean Boolean flag determining whether user is blocking incoming calls
[].missedIncomingCallsNotification Boolean If true user will receive email notifications about missed calls
[].privatePhoneNumber Null User’s phone number added on account registration



With this request you will also receive invited users. They will only have username (email to which you sent invitation), roleId, role (name of a given role) and current state (always PENDING).


User states

State Description
ACTIVE User is enabled (can make calls, counts in plan’s limit)
INACTIVE User disabled (cannot login into your account)
PENDING User was invited via email, but hasn’t registered yet

Checking user’s existence

Example request:

GET /api/v1/users/exists?email=john.doe%40example.com HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 21

{
  "exists" : true
}

You can easily check whether user exists by passing email.

Request parameters
Parameter Description
email (required) User’s email to check


Possible errors
Error key Description
PARAMETER.NOT_PRESENT When email was not present

Disable user

Example request:

PUT /api/v1/users/82/disable HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 159

{
  "id" : 82,
  "username" : "john.doe@example.com",
  "name" : "John",
  "surname" : "Doe",
  "role" : "Agent",
  "enabled" : false,
  "state" : "INACTIVE"
}

You can disable other users - they will be unable to login to your account and to make calls. In addition, they will stop counting towards your plan’s limit.

/api/v1/users/{userId}/disable

Parameter Description
userId User’s id to disable


You cannot disable youreself!


Possible errors
Error key Description
SELF_DISABLE When you try to disable yourself
USER_NOT_EXIST User with given id doesn’t exists

Enable user

Example request:

PUT /api/v1/users/79/enable HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 156

{
  "id" : 79,
  "username" : "john.doe@example.com",
  "name" : "John",
  "surname" : "Doe",
  "role" : "Agent",
  "enabled" : true,
  "state" : "ACTIVE"
}

You can enable disabled users - they will be able to login to your account and to make calls.

/api/v1/users/{userId}/enable

Parameter Description
userId User’s id to enable


Remember that users will be counting towards your plan’s limit. If you reached limit, you will get 400 error with key
USERS.LIMIT_REACHED


Possible errors
Error key Description
USERS.LIMIT_REACHED When your plan doesn’t allow more users
USER_NOT_EXIST User with given id doesn’t exists

Number of users

Example request:

GET /api/v1/users/stats HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 62

{
  "activeCount" : 1,
  "limit" : 100,
  "pendingCount" : 5
}

You can get number of users and current user limit in your plan. Remember - you can always disable and enable them.

Response results
Path Type Description
activeCount Number Number of active users
limit Number All users limit (depends on current plan)
pendingCount Number Number of pending users (invited, but not registered)

Projects

Projects are a way to group your contacts together.

Create new project

When you want to start calling you have to have at least one active project.

Example request:

POST /api/v1/projects HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 201

{
  "name" : "CvLHLXDfBpA",
  "defaultImportCountry" : "US",
  "mainMsisdnId" : 6,
  "eeaMsisdnId" : 6,
  "scriptId" : 1,
  "photo" : "1.jpg",
  "callerRestricted" : true,
  "assignedMsisdns" : [ 6 ]
}
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 185

{
  "id" : 13,
  "name" : "CvLHLXDfBpA",
  "defaultImportCountry" : "US",
  "mainMsisdnId" : 6,
  "eeaMsisdnId" : 6,
  "scriptId" : 1,
  "photo" : "1.jpg",
  "callerRestricted" : true
}
Request fields
Path Type Description
name String Project name to identify
mainMsisdnId Number Id of main callerid (number to be displayed to customers)
eeaMsisdnId Number Id of number to be displayed when calling EEA numbers
callerRestricted Boolean Show client your number or call anonymously
defaultImportCountry String Project’s default import prefix. This prefix will be appended to your imported numbers if they don’t have any
scriptId Number Id of script assigned to this project
photo String Project’s photo (e.g. 12.jpg)
assignedMsisdns Array Array of msisdn IDs to assign to this project


Possible errors
Error key Description
PROJECT_NAME_EMPTY No name was passed
INVALID_DEFAULT_IMPORT_COUNTRY Country code is invalid
SCRIPT_ID_EMPTY No script was passed
SCRIPT_NAME_EXISTS Script with given name already exists
MSISDN_NOT_FOUND Main caller id was not found in your request body
MSISDN_NOT_EXISTS Cannot find msisdn with given id
PLANS_EXCEEDED Your plan doesn’t allow more projects


In response you will receive project object.

Get all projects

You will receive all your projects sorted alphabetically.

Example request:

GET /api/v1/projects HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 421

[ {
  "id" : 33,
  "name" : "extra label",
  "defaultImportCountry" : "PL",
  "mainMsisdnId" : 26,
  "eeaMsisdnId" : 26,
  "scriptId" : 1,
  "photo" : "1.jpg",
  "callerRestricted" : false,
  "status" : "ACTIVE"
}, {
  "id" : 32,
  "name" : "Name",
  "defaultImportCountry" : "PL",
  "mainMsisdnId" : 25,
  "eeaMsisdnId" : 25,
  "scriptId" : 1,
  "photo" : "1.jpg",
  "callerRestricted" : false,
  "status" : "ACTIVE"
} ]
Response results
Path Type Description
[].id Number Project’s id
[].name String Label to be displayed
[].scriptId Number Script assigned to this project
[].mainMsisdnId Number Id of main phone number from which project will be calling
[].eeaMsisdnId Number Id of main eea phone number from which project will be calling
[].callerRestricted Boolean If project’s phone number should be invisible for clients
[].defaultImportCountry String Project’s default import country. Imported numbers will be resolved as numbers from this country if they don’t have country code
[].photo String Name of project’s current photo
[].status String Project current status


Project statuses

Status Description
ACTIVE Normal state, everything is possible
INACTIVE Project doesn’t count in limit. Calling is impossible
SUSPENDED Project is suspended when 3 or more network errors occurred

Get specific project

Example request:

GET /api/v1/projects/34 HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 204

{
  "id" : 34,
  "name" : "Name",
  "defaultImportCountry" : "PL",
  "mainMsisdnId" : 27,
  "eeaMsisdnId" : 27,
  "scriptId" : 1,
  "photo" : "1.jpg",
  "callerRestricted" : false,
  "status" : "ACTIVE"
}

You can also get information about one, specific project

/api/v1/projects/{projectId}

Parameter Description
projectId Id of project to be retrieved
Response results
Path Type Description
id Number Project’s id
name String Label to be displayed
scriptId Number Script assigned to this project
mainMsisdnId Number Id of main phone number from which project will be calling
eeaMsisdnId Number Id of main eea phone number from which project will be calling
callerRestricted Boolean If project’s phone number should be invisible for clients
defaultImportCountry String Project’s default import country. Imported numbers will be resolved as numbers from this country if they don’t have country code
photo String Name of project’s current photo
status String Project current status


Project statuses

Status Description
ACTIVE Normal state, everything is possible
INACTIVE Project doesn’t count in limit. Calling is impossible
SUSPENDED Project is suspended when 3 or more network errors occurred


Possible errors
Error key Description
RESOURCE_NOT_FOUND Cannot find project with given id

Delete project

Example request:

DELETE /api/v1/projects/30 HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK

There is possibility do delete specific project. There is no way to retrieve deleted project, but you will be able to see basic info about it while listing all account’s projects.

/api/v1/projects/{projectId}

Parameter Description
projectId Id of project to delete


Possible errors
Error key Description
RESOURCE_NOT_FOUND Cannot find project with given id

Deactivate project

Example request:

PUT /api/v1/projects/12/deactivate HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 128

{
  "id" : 12,
  "name" : "Name",
  "scriptId" : 1,
  "photo" : "1.jpg",
  "callerRestricted" : false,
  "status" : "INACTIVE"
}

You can temporarily deactivate project. You won’t be able to make calls and it won’t count towards your current plan’s limit of projects. You will be able to activate deactivated project whenever you want, as long as it doesn’t violate your plans limits.

/api/v1/projects/{projectId}/deactivate

Parameter Description
projectId Id of project to deactivate
Response results
Path Type Description
id Number Project’s id
name String Label to be displayed
scriptId Number Script assigned to this project
callerRestricted Boolean If project’s phone number should be invisible for clients
photo String Name of project’s current photo
status String Project current status


Possible errors
Error key Description
RESOURCE_NOT_FOUND Cannot find project with given id

Activate project

Example request:

PUT /api/v1/projects/14/activate HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 126

{
  "id" : 14,
  "name" : "Name",
  "scriptId" : 1,
  "photo" : "1.jpg",
  "callerRestricted" : false,
  "status" : "ACTIVE"
}

You reactivate your disabled projects. But remember - your current plan must be able to handle more projects

/api/v1/projects/{projectId}/activate

Parameter Description
projectId Id of project to activate
Response results
Path Type Description
id Number Project’s id
name String Label to be displayed
scriptId Number Script assigned to this project
callerRestricted Boolean If project’s phone number should be invisible for clients
photo String Name of project’s current photo
status String Project current status


Possible errors
Error key Description
RESOURCE_NOT_FOUND Cannot find project with given id
PROJECTS.LIMIT_REACHED Your plan do not support more projects

Projects statistics

Example request:

GET /api/v1/projects/stats HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 34

{
  "count" : 15,
  "limit" : 30
}

Your current plan and limits. Remember that you can change this by enable / disable specific project or by upgrading your plan.

Response results
Path Type Description
count Number Number of all active projects
limit Number Projects limit (depends on the current plan)

Get contact fields

Example request:

GET /api/v1/projects/31/contact-fields HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 32

[ "pRBKoAWRsLH", "EfyHKvpEUlq" ]

You can get contact fields

/api/v1/projects/{projectId}/contact-fields

Parameter Description
projectId Project’s id to get
Response results
Path Type Description
[] Array List containing contact fields


Possible errors
Error key Description
RESOURCE_NOT_FOUND Cannot find project with given id

Add contact field

Example request:

POST /api/v1/projects/35/contact-fields HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 48

{
  "name" : "orxYJqXEwcv",
  "oldName" : null
}
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 48

{
  "name" : "orxYJqXEwcv",
  "oldName" : null
}

You can add a contact field to project

/api/v1/projects/{projectId}/contact-fields

Parameter Description
projectId Project’s id to add new contact field to
Request fields
Path Type Description
name String (required) Contact field that will be attached to project


Possible errors
Error key Description
RESOURCE_NOT_FOUND Cannot find project with given id
CONTACT_FIELD_EXISTS Contact field with given name already exists

Contacts

Contact is a basic object representing entity that you can call to.

Get all contacts

Example request:

GET /api/v1/contacts?page=2&limit=2&modificationDateFrom=2013-05-03T20%3A30%3A40.100Z&orderModificationDate=asc&msisdn=%2B HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 956

{
  "total" : 6,
  "totalPages" : 3,
  "links" : {
    "first" : "https://api.crazycall.com/api/v1/contacts",
    "prev" : "https://api.crazycall.com/api/v1/contacts?page=1",
    "next" : "https://api.crazycall.com/api/v1/contacts?page=3",
    "last" : "https://api.crazycall.com/api/v1/contacts?page=3"
  },
  "data" : [ {
    "id" : 85,
    "projectId" : 54,
    "msisdn" : "+48717221111",
    "firstName" : null,
    "lastName" : null,
    "company" : null,
    "externalLink" : null,
    "createdAt" : "2024-02-21T11:18:48.000Z",
    "lastModificationDate" : "2024-02-21T11:18:48.060Z",
    "status" : "Open",
    "email" : null
  }, {
    "id" : 86,
    "projectId" : 54,
    "msisdn" : "+33980091888",
    "firstName" : null,
    "lastName" : null,
    "company" : null,
    "externalLink" : null,
    "createdAt" : "2024-02-21T11:18:48.000Z",
    "lastModificationDate" : "2024-02-21T11:18:48.105Z",
    "status" : "Open",
    "email" : null
  } ]
}

Returns paginated list of contacts imported to the application.

Request parameters
Parameter Description
page Page number to be returned. Default of 1
limit Returned page will consist of that many elements or default of 100, whichever is lower
orderModificationDate Sorting applied to result, using contact’s last modification date. Either asc or desc, default asc
modificationDateFrom Filter result to only records newer or equal to given date. (e.g. 2013-05-03T20:30:40.100Z)
projectId Filter result to records which ID of the project equals to given value.
msisdn Filter result to records which MSISDN contains given sequence. Note: Please remember that ‘+’ is a special character in URL and make sure that you use ‘%2B’ instead. (e.g. %2B1 will show all numbers from U.S., Canada and other NANP countries.)


Response results
Path Type Description
total Number Total elements count returned by the query
totalPages Number Total pages count
links.first String API URL to first page of the data set
links.prev String API URL to prev page of the data set, or null if current is first
links.next String API URL to next page of the data set, or null if current is last
links.last String API URL to last page of the data set, or null if no data
data Array Array of contacts
data.[].id Number ID of the contact
data.[].projectId Number ID of project, that the contact belongs to
data.[].msisdn String Primary MSISDN associated with the contact
data.[].firstName String FirstName associated with the contact
data.[].lastName String Last name associated with the contact
data.[].company String Company associated with the contact
data.[].externalLink String External link related to the contact
data.[].email String Email associated with the contact
data.[].createdAt String Date when contact was created
data.[].lastModificationDate String Contact’s last modification date
data.[].status String Status of contact


Possible errors
Error key Description
PAGE_NUMBER_INVALID When page parameter was invalid
LIMIT_INVALID When limit parameter was invalid
ORDER_MODIFICATION_DATE_INVALID When orderModificationDate parameter was invalid
MODIFICATION_DATE_FROM_INVALID When modificationDateFrom parameter was invalid

Get contact by id

Returns specific contact

Example request:

GET /api/v1/contacts/67 HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 290

{
  "id" : 67,
  "projectId" : 50,
  "msisdn" : "+14153661222",
  "firstName" : null,
  "lastName" : null,
  "company" : null,
  "externalLink" : null,
  "createdAt" : "2024-02-21T11:18:47.000Z",
  "lastModificationDate" : "2024-02-21T11:18:47.350Z",
  "status" : "Open",
  "email" : null
}

/api/v1/contacts/{contactId}

Parameter Description
contactId Contacts’s id to get
Response results
Path Type Description
id Number ID of the contact
projectId Number ID of project, that the contact belongs to
msisdn String Primary msisdn associated with the contact
firstName String FirstName associated with the contact
lastName String Last name associated with the contact
company String Company associated with the contact
externalLink String External link related to the contact
email String Email associated with the contact
createdAt String Date when contact was created
lastModificationDate String Contact’s last modification date
status String Status of contact


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exist

Edit contact by id

Edits contact by id.

Example request:

POST /api/v1/contacts/38 HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 287

{
  "id" : null,
  "projectId" : null,
  "msisdn" : null,
  "firstName" : "Jeo",
  "lastName" : "Doe",
  "company" : "email@emai.com",
  "externalLink" : "https://www.crazycall.com",
  "createdAt" : null,
  "lastModificationDate" : null,
  "status" : null,
  "email" : "email@emai.com"
}

/api/v1/contacts/{contactId}

Parameter Description
contactId Contacts’s id which details will be updated
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 313

{
  "id" : 38,
  "projectId" : 43,
  "msisdn" : "+14153661222",
  "firstName" : null,
  "lastName" : null,
  "company" : null,
  "externalLink" : "https://www.crazycall.com",
  "createdAt" : "2024-02-21T11:18:46.000Z",
  "lastModificationDate" : "2024-02-21T11:18:46.123Z",
  "status" : "Open",
  "email" : null
}
Response results
Path Type Description
id Number id of contact
projectId Number projectId of contact
msisdn String Msisdn of contact
createdAt String Creation date of contact
status String status of contact
firstName String Updated first name of contact
lastName String Updated last Name of contact
company String Updated company of contact
externalLink String Updated external link related to the contact
email String Updated email of contact
lastModificationDate String date of last modification


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exisit

Delete contact

Deletes contact with given id. Keep in mind that contact state may prevent it from deletion, e.g. when it is in the calling state.

Example request:

DELETE /api/v1/contacts/39 HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

/api/v1/contacts/{contactId}

Parameter Description
contactId Contacts’s id to delete
Example response:

HTTP/1.1 200 OK


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exist
CANNOT_DELETE_CONTACT When it is forbidden to delete given contact, e.g. it is in call state

Close contact

Closes contact with given id. Keep in mind that contact state may prevent it from closing, e.g. when it is in the calling state or it’s already closed.

Example request:

POST /api/v1/contacts/89/close HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

/api/v1/contacts/{contactId}/close

Parameter Description
contactId Contacts’s id to close
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 292

{
  "id" : 89,
  "projectId" : 55,
  "msisdn" : "+14153661222",
  "firstName" : null,
  "lastName" : null,
  "company" : null,
  "externalLink" : null,
  "createdAt" : "2024-02-21T11:18:48.222Z",
  "lastModificationDate" : "2024-02-21T11:18:48.258Z",
  "status" : "Closed",
  "email" : null
}
Response results
Path Type Description
id Number ID of the contact
projectId Number ID of project, that the contact belongs to
msisdn String Primary msisdn associated with the contact
firstName String FirstName associated with the contact
lastName String Last name associated with the contact
company String Company associated with the contact
externalLink String External link related to the contact
email String Email associated with the contact
createdAt String Date when contact was created
lastModificationDate String Contact’s last modification date
status String Status of contact


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exist
CANNOT_CLOSE_CONTACT When contact is in call state or is closed

Open contact

Opens contact with given id. You can only open contacts that are closed or not verified.

Example request:

POST /api/v1/contacts/65/open HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

/api/v1/contacts/{contactId}/open

Parameter Description
contactId Contacts’s id to open
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 290

{
  "id" : 65,
  "projectId" : 49,
  "msisdn" : "+14153661222",
  "firstName" : null,
  "lastName" : null,
  "company" : null,
  "externalLink" : null,
  "createdAt" : "2024-02-21T11:18:47.225Z",
  "lastModificationDate" : "2024-02-21T11:18:47.268Z",
  "status" : "Open",
  "email" : null
}
Response results
Path Type Description
id Number ID of the contact
projectId Number ID of project, that the contact belongs to
msisdn String Primary msisdn associated with the contact
firstName String FirstName associated with the contact
lastName String Last name associated with the contact
company String Company associated with the contact
externalLink String External link related to the contact
email String Email associated with the contact
createdAt String Date when contact was created
lastModificationDate String Contact’s last modification date
status String Status of contact


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exist
CANNOT_OPEN_CONTACT When contact is not in “closed” or “not verified” state

Schedule contact

Schedules contact with given id to be called at specified time. You cannot schedule contacts that are closed / not verified, or that are currently being called / updated.

/api/v1/contacts/{contactId}/schedule

Parameter Description
contactId Contacts’s id to schedule.
Example request:

POST /api/v1/contacts/78/schedule HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 68

{
  "scheduleDate" : "2024-02-21T11:28:47.758Z",
  "note" : "Note"
}
Request fields
Path Type Description
scheduleDate String Date and time (in the future) the contact should be called at (e.g. 2020-04-03T20:30:40.100Z)
note String Note
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 308

{
  "contactId" : 78,
  "primaryMsisdn" : "+14153661222",
  "alternativeMsisdns" : [ "+14153661222" ],
  "emails" : [ ],
  "status" : "SCHEDULED",
  "lock" : "NO_LOCK",
  "lastModificationDate" : "2024-02-21T11:18:47.766Z",
  "createdAt" : "2024-02-21T11:18:47.723Z",
  "createdBy" : 39,
  "origin" : "API"
}
Response results
Path Type Description
contactId Number Id of the contact
primaryMsisdn String Primary msisdn of the contact
alternativeMsisdns Array Alternative msisdns of the contact (incl. primary)
emails Array List of emails associated with returned contact
status String Contact’s status
lock String Lock type, possible locks: NO_LOCK, IN_QUEUE_APP, CALLING, UPDATE_LOCK
lastModificationDate String Last modification date
createdAt String Contact’s creation date
createdBy Number Id of User who created the contact
origin String Contact’s origin


Possible errors
Error key Description
SCHEDULE_DATE_MUST_BE_SPECIFIED No schedule date was passed
SCHEDULE_DATE_CANNOT_BE_IN_THE_PAST Schedule date is in the past
WRONG_CONTACT_STATE Contact is in closed/not verified state, or it’s locked for calling / update
RESOURCE_NOT_FOUND When contact doesn’t exist

Get contact details

Returns detailed information about contact. Contact details are irregular structure so they are represented as JSON.

Example request:

GET /api/v1/contacts/53/details HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 42

{
  "gender": "male",
  "country": "USA"
}


When your contact have detailed information like gender and country then the json will look like this :
{ "gender":"male", "country":"USA" }

/api/v1/contacts/{contactId}/details

Parameter Description
contactId Contacts’s id to get


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exist

Add and update contact details

Example request:

POST /api/v1/contacts/25/details HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 42

{
  "surname" : "doe",
  "name" : "john"
}
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 82

{
  "gender": "male",
  "country": "USA",
  "surname" : "doe",
  "name" : "john"
}

Method updates additional information in contact. JSON with key and value should be provided in post body to update values. If keys provided in JSON body existed before, they are updated with new values. If they didn’t exist, they are added to the existing document.

/api/v1/contacts/{contactId}/details

Parameter Description
contactId Contacts’s id which details will be edited


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exist

Edit contact details

Example request:

PUT /api/v1/contacts/42/details HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 42

{
  "surname" : "doe",
  "name" : "john"
}

Methods edits information in contact detail. JSON with key and value, which exist in details should be send in post body to edit. If provided elements do not appear in existing element, system won’t include them.

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 82

{
  "gender": "male",
  "country": "USA",
  "surname" : "doe",
  "name" : "john"
}

/api/v1/contacts/{contactId}/details

Parameter Description
contactId Contacts’s id which details will be updated


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exist

Import contact

You can import contact to project

Example request:

POST /api/v1/contacts HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 737

{
  "projectId" : 52,
  "mainMsisdnColumnName" : "mainMsisdnColumnName",
  "firstNameColumnName" : "firstNameColumnName",
  "lastNameColumnName" : "lastNameColumnName",
  "emailColumnName" : "emailColumnName",
  "companyColumnName" : "companyColumnName",
  "externalLinkColumnName" : null,
  "alternativeMsisdnColumnNames" : [ "alternativeMsisdnColumnName" ],
  "details" : {
    "lastNameColumnName" : "Lastname",
    "emailColumnName" : "test@crazycall.com",
    "mainMsisdnColumnName" : "+14153661222",
    "alternativeMsisdnColumnName" : "+48717221111",
    "externalLinkColumnName" : "https://www.crazycall.com",
    "companyColumnName" : "Company name",
    "firstNameColumnName" : "Firstname",
    "plainColumnName" : "test"
  }
}
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 329

{
  "id" : 80,
  "projectId" : 52,
  "msisdn" : "+14153661222",
  "firstName" : "Firstname",
  "lastName" : "Lastname",
  "company" : "Company name",
  "externalLink" : null,
  "createdAt" : "2024-02-21T11:18:48.000Z",
  "lastModificationDate" : "2024-02-21T11:18:47.859Z",
  "status" : "Open",
  "email" : "test@crazycall.com"
}
Request fields
Path Type Description
projectId Number Contact will be added to that project
mainMsisdnColumnName String Name of main msisdn column
firstNameColumnName String Name of first name column
lastNameColumnName String Name of last name column
emailColumnName String Name of email column
companyColumnName String Name of company column
externalLinkColumnName Null Name of external link column
alternativeMsisdnColumnNames Array Names of alternative msisdn columns
details Object Data to be imported
Response results
Path Type Description
id Number ID of the contact
projectId Number ID of project, that the contact belongs to
msisdn String Primary msisdn associated with the contact
firstName String FirstName associated with the contact
lastName String Last name associated with the contact
company String Company associated with the contact
externalLink String External link related to the contact
email String Email associated with the contact
createdAt String Date when contact was created
lastModificationDate String Contact’s last modification date
status String Status of contact


Possible errors
Error key Description
PROJECT_ID_EMPTY No project’s id was passed
PROJECT_NOT_EXIST Project with given id does not exist
DETAILS_EMPTY No data was passed
MAIN_MSISDN_EMPTY No main msisdn was passed
MAIN_MSISDN_NOT_EXIST Column with given main msisdn does not exist

Contact history

You can get contact history

Example request:

GET /api/v1/contacts/13/history HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

/api/v1/contacts/{contactId}/history

Parameter Description
contactId Contacts’s id to get
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 518

[ {
  "id" : 15,
  "contactId" : 13,
  "createdAt" : "2024-02-21T11:18:45.544+00:00",
  "type" : "NOTE",
  "agentUsername" : "john.doe@example.com",
  "name" : "John",
  "surname" : "Doe",
  "recordingAvailable" : false,
  "note" : "test",
  "callDetails" : { }
}, {
  "id" : 4,
  "contactId" : 13,
  "createdAt" : "2024-02-21T11:18:45.356+00:00",
  "type" : "IMPORT_CONTACT",
  "agentUsername" : "john.doe@example.com",
  "name" : "John",
  "surname" : "Doe",
  "recordingAvailable" : false,
  "callDetails" : { }
} ]
Response results
Path Type Description
[].id Number Contact event id
[].contactId Number Contact id
[].createdAt String Date when event was created
[].type String Type describing what happened with contact
[].customStatus String Custom status set by agent
[].clientMsisdn String Client phone number
[].historicalCallerId String Number that contact was called from
[].labelCallerId String historicalCallerId label
[].callId Number Id of call connected with event
[].callLength Number Length of call connected with event
[].agentUsername String Agent’s username (typically email)
[].name String Agent’s name
[].surname String Agent’s surname
[].newMsisdn String If number was changed it will be new number added to contact
[].oldMsisdn String If number was changed it will be old number added to contact
[].recordingAvailable Boolean Indicates if call recording is ready to download
[].note String Note added to contact
[].appType String Application used for the call. Can be either: BROWSER, WIDGET, MOBILE
[].callDetails Object Additional fields related to the call


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exist

Add note

You can add note to contact

/api/v1/contacts/{contactId}/note

Parameter Description
contactId Contacts’s id that this note was created for.
Example request:

POST /api/v1/contacts/36/note HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 21

{
  "note" : "Note"
}
Request fields
Path Type Description
note String Contents of note
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 303

{
  "contactId" : 36,
  "primaryMsisdn" : "+14153661222",
  "alternativeMsisdns" : [ "+14153661222" ],
  "emails" : [ ],
  "status" : "OPEN",
  "lock" : "NO_LOCK",
  "lastModificationDate" : "2024-02-21T11:18:46.057Z",
  "createdAt" : "2024-02-21T11:18:46.025Z",
  "createdBy" : 30,
  "origin" : "API"
}
Response results
Path Type Description
contactId Number Id of the contact
primaryMsisdn String Primary msisdn of the contact
alternativeMsisdns Array Alternative msisdns of the contact (incl. primary)
emails Array List of emails associated with returned contact
status String Contact’s status
lock String Lock type, possible locks: NO_LOCK, IN_QUEUE_APP, CALLING, UPDATE_LOCK
lastModificationDate String Last modification date
createdAt String Contact’s creation date
createdBy Number Id of User who created the contact
origin String Contact’s origin


Possible errors
Error key Description
NOTE_EMPTY No note was passed
USER_NOT_EXIST User with given email does not exist

Get primary msisdn of specific contact

Returns primary msisdn of specific contact.

Example request:

GET /api/v1/contacts/91/primary-msisdn HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 31

{
  "msisdn" : "+14153661222"
}

/api/v1/contacts/{contactId}/primary-msisdn

Parameter Description
contactId Contacts’s id to get
Response results
Path Type Description
msisdn String Current primary msisdn


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exist

Add new primary msisdn

Add a new number to an existing contact and set it as primary number.

Example request:

POST /api/v1/contacts/41/primary-msisdn HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 30

{
  "msisdn" : "+6499519999"
}
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 30

{
  "msisdn" : "+6499519999"
}

/api/v1/contacts/{contactId}/primary-msisdn

Parameter Description
contactId Contacts’s id to add new main number


You must set new msisdn as request body. Remember that number can’t exist in any contact in the same project. Valid msisdn has format: [optional '+' or '00'][country code][actual number], e.g. all of these are valid 14153661222, +14153661222, 0014153661222

Request fields
Path Type Description
msisdn String Valid phone number which will be contact’s number
Response results
Path Type Description
msisdn String Current primary msisdn


Possible errors
Error key Description
MSISDN_EXISTS_IN_PROJECT Your msisdn already exists for this project
INVALID_MSISDN You typed invalid msisdn
RESOURCE_NOT_FOUND Cannot find contact with given id

Update primary msisdn

If you have many alternative msisdns assigned to one contact you can change the primary msisdn from them.

Example request:

PUT /api/v1/contacts/81/primary-msisdn HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 31

{
  "msisdn" : "+14153661222"
}
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 31

{
  "msisdn" : "+14153661222"
}

/api/v1/contacts/{contactId}/primary-msisdn

Parameter Description
contactId Contacts’s id to update primary msisdn


You must set new msisdn as request body. Remember that number must exist as alternative msisdn in this contact. Valid msisdn has format: [optional '+' or '00'][country code][actual number], e.g. all of these are valid 14153661222, +14153661222, 0014153661222

Request fields
Path Type Description
msisdn String Existing phone number which will be contact’s number
Response results
Path Type Description
msisdn String Current primary msisdn


Possible errors
Error key Description
MSISDN_NOT_EXISTS_FOR_CONTACT Your msisdn not exist in current contact
INVALID_MSISDN You typed invalid msisdn
RESOURCE_NOT_FOUND Cannot find contact with given id

Get all alternative msisdns of specific contact

Contact can be associated with more than one number, i.e. office, home, mobile. All numbers except primary one are called alternative msisdns. Agent, when calling, can manage and call alternative msisdn. Remember however, that each msisdn can be assigned to at most one contact in a project.

Example request:

GET /api/v1/contacts/24/alternative-msisdns HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 47

[ {
  "id" : 18,
  "msisdn" : "+6499519999"
} ]

/api/v1/contacts/{contactId}/alternative-msisdns

Parameter Description
contactId Contacts’s id to get
Response results
Path Type Description
[].id Number Alternative msisdn ID attached to newly created msisdn entity
[].msisdn String Msisdn that you added


Possible errors
Error key Description
RESOURCE_NOT_FOUND When contact doesn’t exist

Add new alternative msisdn

This API allows you to attach new alternative msisdns to contact.

Example request:

POST /api/v1/contacts/12/alternative-msisdns HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 30

{
  "msisdn" : "+6499519999"
}
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 42

{
  "id" : 4,
  "msisdn" : "+6499519999"
}

/api/v1/contacts/{contactId}/alternative-msisdns

Parameter Description
contactId Contacts’s id to append alternative msisdn
Request fields
Path Type Description
msisdn String Phone number that will be attached to contact
Response results
Path Type Description
id Number Alternative msisdn ID attached to newly created msisdn entity
msisdn String Msisdn that you added


Possible errors
Error key Description
MSISDN_EXISTS_IN_PROJECT Your msisdn already exists for this project
INVALID_MSISDN You typed invalid msisdn
RESOURCE_NOT_FOUND Cannot find contact with given id

Delete alternative msisdn

This API allows you to remove alternative msisdns from contact. You cannot delete primary msisdn.

Example request:

DELETE /api/v1/contacts/64/alternative-msisdns/60 HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 43

{
  "id" : 60,
  "msisdn" : "+6499519999"
}

/api/v1/contacts/{contactId}/alternative-msisdns/{msisdnId}

Parameter Description
contactId Contacts’s id that alternative msisdn belongs to
msisdnId Alternative msisdn ID to be removed
Response results
Path Type Description
id Number Alternative msisdn ID that were removed
msisdn String Msisdn associated with deleted alternative msisdn entity


Possible errors
Error key Description
PRIMARY_MSISDN You cannot delete alternative msisdn that is primary at the same time
RESOURCE_NOT_FOUND Cannot find alternative msisdn with given id

Get script answers for given event

Example request:

GET /api/v1/contacts/events/99/answers HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 257

{
    "Text question": [
        "Some answer"
    ],
    "Multi choice question": [
        "Answer 1",
        "Answer 2"
    ],
    "Date question": [
        "2017-10-24"
    ],
    "Date time question": [
        "2017-12-06T11:12:44.334+01:00"
    ]
}

Get answers to agent questions asked during call. There are events that won’t produce answers (e.g. Failed events, where connection was not established) hence answers are optional.


Possible errors
Error key Description
RESOURCE_NOT_FOUND When event doesn’t exist


As response you will receive object with questions as keys and array with client’s answers as value.

Response results
Path Type Description
[] Array Map containing question-answers pairs for given event id

Phone numbers

Phone number (msisdn) is basic object for calling purposes. You can assign msisdn to project (each project can have different numbers)

Get all msisdns

Returns available msisdns to given client

Example request:

GET /api/v1/msisdns HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 264

[ {
  "id" : 49,
  "msisdn" : "+48717221111",
  "eea" : true,
  "isoCountry" : "pl",
  "label" : "ZFpVP",
  "initial" : false
}, {
  "id" : 50,
  "msisdn" : "+14153661222",
  "eea" : false,
  "isoCountry" : "us",
  "label" : "+14153661222",
  "initial" : false
} ]
Response results
Path Type Description
[].id Number Msisdn’s id
[].msisdn String Actual phone number
[].label String Msisdn’s label to be displayed
[].eea Boolean Is number in European Economic Area
[].isoCountry String Number’s iso country code

Set up call forwarding for incoming calls

You can set up call forwarding to automatically transfer all incoming calls from your CrazyCall number to any other number you specify, i.e. your cellphone.

Example request:

POST /api/v1/inbound/configuration/numbers/48/forward HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 36

{
  "phoneNumber" : "+14153661222"
}

/api/v1/inbound/configuration/numbers/{msisdnId}/forward

Parameter Description
msisdnId Phone number’s id which configuration will be updated
Example response body:


{
  "status" : "success",
  "data" : null
}
Request fields
Path Type Description
phoneNumber String (required) Phone number where calls will be forwarded


Possible errors
Error key Description
PHONE_NUMBER_INVALID When passed phone number in invalid format
MSISDN_NOT_FOUND When there is no phone number with given id
CANNOT_CONFIGURE_CLIENTS_MSISDN When trying to configure client’s phone number

Do Not Call List

Do Not Call List is a list of phone numbers (msisdns) you do not wish to call. Numbers from that list will not be dialed, even when imported as contacts. You can block and unblock numbers from that list.

Get Do Not Call List history

Returns history of phone numbers (msisdns) which have been on the list.

Example request:

GET /api/v1/dnclist?page=1&limit=5&dateFrom=2013-05-03T20%3A30%3A40&dateTo=2119-05-03T20%3A30%3A40&msisdnLike=64&orderColumn=eventDate&direction=DESC HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Request parameters
Parameter Description
page Page number to be returned.
limit Returned page will consist of that many elements.
dateFrom Filter result to only records newer or equal to given date. (e.g. 2013-05-03T20:30:40.100Z)
dateTo Filter result to only records older or equal to given date. (e.g. 2013-05-03T20:30:40.100Z)
msisdnLike Phone number pattern, e.g. “123” matches all numbers containing sequence “123”
orderColumn Order column. Available: msisdn, username, eventDate, status.
direction Sorting direction. Available: ASC, DESC
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 439

{
  "total" : 2,
  "data" : [ {
    "msisdn" : "+16475586333",
    "eventDate" : "2024-02-21T11:18:49.303Z",
    "userId" : 69,
    "status" : "UNBLOCKED",
    "username" : "john.doe@example.com",
    "sameMsisdnEventsCount" : 2
  }, {
    "msisdn" : "+6499519999",
    "eventDate" : "2024-02-21T11:18:49.293Z",
    "userId" : 69,
    "status" : "UNBLOCKED",
    "username" : "john.doe@example.com",
    "sameMsisdnEventsCount" : 4
  } ]
}
Response results
Path Type Description
total Number Total elements count returned by the query
data Array Array of events
data.[].msisdn String Event phone number
data.[].eventDate String Event date
data.[].userId Number User Id of user who made event
data.[].status String Blacklist record event status
data.[].username String Username of user who made event
data.[].sameMsisdnEventsCount Number Same phone numbers events count


Possible errors
Error key Description
EMPTY_FIELD When page or limit is not present
PAGE_NUMBER_INVALID When page parameter was invalid
LIMIT_INVALID When limit parameter was invalid
WRONG_ORDER_COLUMN When order column is does not match any of msisdn, username, eventDate, status.


Blacklist record status

Status Description
BLOCKED Number has been banned
UNBLOCKED Number has been unlocked

Get number Do Not Call List history

Returns history of a particular number from Do Not Call List

Example request:

GET /api/v1/dnclist/+6499519999 HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 316

[ {
  "msisdn" : "+6499519999",
  "eventDate" : "2024-02-21T11:18:49.377Z",
  "userId" : 70,
  "status" : "UNBLOCKED",
  "username" : "john.doe@example.com"
}, {
  "msisdn" : "+6499519999",
  "eventDate" : "2024-02-21T11:18:49.372Z",
  "userId" : 70,
  "status" : "BLOCKED",
  "username" : "john.doe@example.com"
} ]
Response results
Path Type Description
[] Array Array of contacts
[].msisdn String Blacklisted phone number
[].eventDate String Date of event
[].userId Number User Id of user who made event
[].status String Blacklist record event status
[].username String Username of user who made event


Possible errors
Error key Description
MSISDN_NOT_FOUND When phone number is not present in the Do Not Call List.


Blacklist record status

Status Description
BLOCKED Number has been banned
UNBLOCKED Number has been unlocked

Block msisdn

You can block phone numbers (msisdn) to the Do Not Call List. Incorrect numbers will be ignored.

Example request:

POST /api/v1/dnclist/block HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 33

[ "+6499519999", "+16475586333" ]
Request fields
Path Type Description
[] Array Array of msisdns to block
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 237

[ {
  "msisdn" : "+6499519999",
  "eventDate" : "2024-02-21T11:18:49.150Z",
  "userId" : 67,
  "status" : "BLOCKED"
}, {
  "msisdn" : "+16475586333",
  "eventDate" : "2024-02-21T11:18:49.150Z",
  "userId" : 67,
  "status" : "BLOCKED"
} ]
Response results
Path Type Description
[] Array Array of created events
[].msisdn String Event’s phone number
[].eventDate String Date of event
[].userId Number User Id of user who made event
[].status String Blacklist record event status


Blacklist record status

Status Description
BLOCKED Number has been banned
UNBLOCKED Number has been unlocked

Unblock msisdn

You can unblock phone numbers (msisdn) from the Do Not Call List. Incorrect numbers will be ignored.

Example request:

POST /api/v1/dnclist/unblock HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 33

[ "+6499519999", "+16475586333" ]
Request fields
Path Type Description
[] Array Array of msisdns to unblock
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 241

[ {
  "msisdn" : "+16475586333",
  "eventDate" : "2024-02-21T11:18:49.244Z",
  "userId" : 68,
  "status" : "UNBLOCKED"
}, {
  "msisdn" : "+6499519999",
  "eventDate" : "2024-02-21T11:18:49.244Z",
  "userId" : 68,
  "status" : "UNBLOCKED"
} ]
Response results
Path Type Description
[] Array Array of created events
[].msisdn String Event’s phone number
[].eventDate String Date of event
[].userId Number User Id of user who made event
[].status String Blacklist record event status


Blacklist record status

Status Description
BLOCKED Number has been banned
UNBLOCKED Number has been unlocked

Scripts

Each project has one specific script. When calling using Call Panel, questions from script are visible to agents, and agents can save answers to those questions.

Get all scripts

Example request:

GET /api/v1/scripts HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 572

[ {
  "id" : 3,
  "createdBy" : "John Doe",
  "createdById" : 72,
  "modifiedBy" : "John Doe",
  "modifiedById" : 72,
  "createdAt" : "2024-02-21T11:18:50.000+00:00",
  "lastModified" : "2024-02-21T11:18:50.000+00:00",
  "name" : "ScriptNameModified",
  "projectCount" : 0,
  "default" : false
}, {
  "id" : 1,
  "createdBy" : null,
  "createdById" : null,
  "modifiedBy" : null,
  "modifiedById" : null,
  "createdAt" : "2024-02-21T11:10:16.000+00:00",
  "lastModified" : "2024-02-21T11:10:16.000+00:00",
  "name" : "Default",
  "projectCount" : 0,
  "default" : true
} ]

You can retrieve all scripts saved on your account. Remenber that there always will be one default which you can’t delete in any way.

Response results
Path Type Description
[].id Number Script’s id
[].createdBy String Email of person who created script
[].createdById Number Id of person who created script
[].modifiedBy String Email of person who most recently modified script
[].modifiedById Number Id of person who most recently modified script
[].createdAt String Date when script was created
[].lastModified String Date when script was most recently modified
[].name String Script’s label
[].projectCount Number Number of projects this script is assigned to
[].default Boolean Default script cannot be deleted


Script’s states

State Description
USED Script was already used in Callpanel (modify is limited)
UNUSED Script wasn’t used (you can modify all script’s element)
DELETED Cannot use script

Delete script

Example request:

DELETE /api/v1/scripts/2 HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK

You can delete specific script by its id. Remember - you cannot delete default script!

/api/v1/scripts/{scriptId}

Parameter Description
scriptId Id of script to delete


Possible errors
Error key Description
SCRIPT_NOT_EXISTS Cannot find script with given id
ILLEGAL_ACTION_SCRIPT Trying to delete default script

Calls

Call is a domain representation of call done by agent. It has properties describing e.g. length of calling, and agent identification.

Get all calls

You can retrieve all calls made on your account.

Request parameters
Parameter Description
limit (required) Limit number of calls
page (required) Page number
projectId Project identifier
msisdns Array of phone numbers associated with contact
Example request:

GET /api/v1/calls?limit=1&page=1 HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 610

[ {
  "id" : 4265478739375079424,
  "recordingExists" : false,
  "startDate" : "2024-02-20T11:18:45.099Z",
  "finishDate" : "2024-02-20T11:18:45.099Z",
  "answeredDate" : "2024-02-20T11:18:45.099Z",
  "lengthSeconds" : 0,
  "direction" : "OUTBOUND",
  "msisdn" : "",
  "agentUsername" : "john.doe@example.com",
  "agentName" : "John",
  "agentSurname" : "Doe",
  "agentMsisdn" : null,
  "agentMsisdnIsoCountry" : null,
  "agentMsisdnLabel" : null,
  "answered" : true,
  "contactName" : null,
  "contactSurname" : null,
  "appType" : "BROWSER",
  "callDetails" : {
    "key" : "value",
    "number" : 7
  }
} ]

Data will be sorted by finished date.

Response results
Path Type Description
[] Array All finished calls
[].id Number Call’s id
[].recordingExists Boolean Indicates whether call has a recording.
[].startDate String Date and time when call has been started
[].finishDate String Date and time when call has been finished
[].answeredDate String Date and time when call has been answered
[].lengthSeconds Number Duration of the call in seconds
[].direction String Direction of the call
[].msisdn String Actual phone number
[].agentUsername String Calling agent’s username (typically email)
[].agentName String Calling agent’s name
[].agentSurname String Calling agent’s surname
[].answered Boolean Indicates whether call has been answered
[].agentMsisdn String Agent phone number
[].agentMsisdnIsoCountry String Agent phone number country code
[].agentMsisdnLabel String Agent phone number label
[].contactName String Contact’s name
[].contactSurname String Contact’s surname
[].appType String Application used for the call. Can be either: BROWSER, WIDGET, MOBILE
[].callDetails Object Additional fields related to the call


Possible directions

Direction Description
INBOUND Call inbound (to CrazyCall app)
OUTBOUND Call outbound (from CrazyCall app)

Get specific call

You can receive specific call established with your account.

/api/v1/calls/{id}

Parameter Description
id Call’s id to get
Example request:

GET /api/v1/calls/4207368564280068096 HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 606

{
  "id" : 4207368564280068096,
  "recordingExists" : false,
  "startDate" : "2024-02-20T11:18:45.052Z",
  "finishDate" : "2024-02-20T11:18:45.052Z",
  "answeredDate" : "2024-02-20T11:18:45.052Z",
  "lengthSeconds" : 0,
  "direction" : "OUTBOUND",
  "msisdn" : "",
  "agentUsername" : "john.doe@example.com",
  "agentName" : "John",
  "agentSurname" : "Doe",
  "agentMsisdn" : null,
  "agentMsisdnIsoCountry" : null,
  "agentMsisdnLabel" : null,
  "answered" : true,
  "contactName" : null,
  "contactSurname" : null,
  "appType" : "BROWSER",
  "callDetails" : {
    "key" : "value",
    "number" : 7
  }
}
Response results
Path Type Description
id Number Call’s id
recordingExists Boolean Indicates whether call has a recording.
startDate String Date and time when call has been started
finishDate String Date and time when call has been finished
answeredDate String Date and time when call has been answered
lengthSeconds Number Length of the call in seconds
direction String Direction of the call
msisdn String Actual phone number
agentUsername String Agent’s username (typically email)
agentName String Agent’s name
agentSurname String Agent’s surname
answered Boolean Logic value describing if call was answered
agentMsisdn String Agent phone number
agentMsisdnIsoCountry String Agent phone number country code
agentMsisdnLabel String Agent phone number label
contactName String Contact’s name
contactSurname String Contact’s surname
appType String Application used for the call. Can be either: BROWSER, WIDGET, MOBILE
callDetails Object Additional fields related to the call


Possible errors
Error key Description
CALL_NOT_FOUND When the call with the given id is not available


Possible directions

Direction Description
INBOUND Call inbound (to CrazyCall app)
OUTBOUND Call outbound (from CrazyCall app)

Call recordings

Each call in CrazyCall is recorded and is available for download according to the plan you have purchased.

This method generates a link to the call recording. Recording availability can be limited by the plan you’ve purchased. Please be aware the link is public and doesn’t require an API key to download the file. A generated link contains a token at the end, which can be used to delete the link.

Request fields
Path Type Description
callId Number (required) Call’s id that belongs to the recording
Example request:

POST /api/v1/recordings HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 36

{
  "callId" : 4424696535507716096
}
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 156

{
  "callId" : 4424696535507716096,
  "link" : "http://crazycall.com/recording-files/your-account-hash.crazycall.com/c537b14e-daed-4667-ad0c-f5b92396b8ba"
}
Response results
Path Type Description
callId Number Call’s id that belongs to the recording.
link String Link to the recording.


Possible errors
Error key Description
CALL_NOT_FOUND When there is no matching call.
RECORDING_NOT_FOUND When there is no matching recording to provided call, or it hasn’t been processed yet.
DATE_LIMIT_EXCEEDED When the provided date exceeds the limit in your plan.

Returns all generated links along with call id.

Example request:

GET /api/v1/recordings HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 160

[ {
  "callId" : 1889986036514201600,
  "link" : "http://crazycall.com/recording-files/your-account-hash.crazycall.com/f1dd8bba-21c5-4b71-8388-821b37279dc2"
} ]
Response results
Path Type Description
[] Array Array of all generated links.
[].callId Number Call’s id that belongs to the recording.
[].link String Link to the recording.

This method deletes a link to the public recording. This method does not remove recording itself.

/api/v1/recordings/{token}

Parameter Description
token (required) Token provided with the link.
Example request:

DELETE /api/v1/recordings/48a97b7d-9d59-4a1f-b6c7-96d219c4bf5e HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK


Possible errors
Error key Description
RECORDING_NOT_FOUND When there is no matching recordings to provided token.

This method generates a link to the archive containing call recordings matching provided parameters. Parameters may be limited by the plan you’ve purchased. Please be aware the link is public and doesn’t require an API key to download the file. A generated link contains a token at the end, which can be used to delete the link.

Request fields
Path Type Description
dateFrom String (required) Filter result to call recordings newer or equal to a given date (e.g. 2019-01-01T20:30:40.100Z).
dateTo String (required) Filter result to call recordings older or equal to a given date (e.g. 2019-01-01T20:30:40.100Z).
msisdns Array Phone numbers you have been calling to and want to get recordings from.
userIds Array Ids of users who were participating in the call.
projectIds Array Ids of projects in which the call happened.
Example request:

POST /api/v1/archive HTTP/1.1
Content-Type: application/json
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com
Content-Length: 146

{
  "msisdns" : [ ],
  "userIds" : [ ],
  "projectIds" : [ ],
  "dateFrom" : "2024-02-19T11:18:30.000Z",
  "dateTo" : "2024-02-21T11:18:30.000Z"
}
Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 209

{
  "link" : "http://crazycall.com/recording-archives/your-account-hash.crazycall.com/daa3f6f2-3e30-4335-94c9-a836129dc538",
  "dateFrom" : "2024-02-19T11:18:30.000Z",
  "dateTo" : "2024-02-21T11:18:30.000Z"
}
Response results
Path Type Description
link String Link to the created archive.
dateFrom String Lower bound of date range which covers archive.
dateTo String Upper bound of date range which covers archive.


Possible errors
Error key Description
RECORDING_NOT_FOUND When there are no matching recordings to provided parameters.
DATE_LIMIT_EXCEEDED When the provided date exceeds the limit in your plan.

Returns all generated links along with date ranges they cover.

Example request:

GET /api/v1/archive HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 213

[ {
  "link" : "http://crazycall.com/recording-archives/your-account-hash.crazycall.com/d0a0ab73-ffc5-46ef-8867-b606378ca5d8",
  "dateFrom" : "2024-02-19T11:18:30.000Z",
  "dateTo" : "2024-02-21T11:18:30.000Z"
} ]
Response results
Path Type Description
[] Array Array of all generated links along with date ranges they cover.
[].link String Link to the created archive.
[].dateFrom String Lower bound of date range which covers archive.
[].dateTo String Upper bound of date range which covers archive.

This method deletes a link to the already created archive.

/api/v1/archive/{token}

Parameter Description
token (required) Token provided with the link.
Example request:

DELETE /api/v1/archive/a028b340-dc62-4c21-a97c-5c1412cb33bd HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK


Possible errors
Error key Description
RECORDING_NOT_FOUND When there are no matching recordings to provided parameters.
ARCHIVE_NOT_CREATED_YET When the archive link has been created, but the archive itself has not been created yet.

Get recording that belongs to the call

You can retrieve a call’s recording which is an audio file. Each call between agent and customer is recorded, and is available for download according to the plan you have purchased. The file is streamed.

/api/v1/call/{callId}/recording

Parameter Description
callId (Required) Call’s id that belongs to the recording
Example request:

GET /api/v1/call/3731090957200796672/recording HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Length: 53
Content-Type: application/octet-stream

The content will be a byte stream from an audio file.


Possible errors
Error key Description
CALL_NOT_FOUND When the call with the given id is not available
RECORDING_NOT_FOUND When recording is not available for the given call id.

Finance

Finance represents your current plan’s settings and monetary balance

Get balance

Example request:

GET /api/v1/finance/balance?dateFrom=2024-02-21T11%3A18%3A42.459Z HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 86

{
  "balance" : {
    "monetary" : 10,
    "voice" : 0
  },
  "secondsUsedToday" : 0
}

You can receive your current balance. It depends on your plan.

Request parameters
Parameter Description
dateFrom (required) Date in ISO date format (e.g. 2024-02-21T11:18:42.459Z)
Response results
Path Type Description
balance Object Represents current balance
balance.monetary Number Current balance (in plan’s currency)
balance.voice Number Free call time from plan (in seconds)
secondsUsedToday Number How many free seconds was used in day given as parameter (+24h)


Possible errors
Error key Description
PARAMETER.NOT_PRESENT When dateFrom was not present
DATE_INVALID Date was passed in invalid format

Get destinations

Example request:

GET /api/v1/finance/plans/destinations HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 8254

{
  "destinations" : {
    "GB_Mobile" : {
      "countryIsoCode" : "gb",
      "description" : "Mobile"
    },
    "US_Local" : {
      "countryIsoCode" : "us",
      "description" : "Local"
    },
    "RO_Mobile" : {
      "countryIsoCode" : "ro",
      "description" : "Mobile"
    },
    "MX_All" : {
      "countryIsoCode" : "mx",
      "description" : "All"
    },
    "AT_Local" : {
      "countryIsoCode" : "at",
      "description" : "Local"
    },
    "BD_All" : {
      "countryIsoCode" : "bd",
      "description" : "All"
    },

    ...

  },
  "destinationGroups" : {
    "basic" : [ "SK_Local", "ZA_Local", "KR_Local", "SE_Mobile", "GB_Mobile", "IS_Local", "IE_Local", "IL_Local",  ...],
    "free" : [ "BR_Local", "CA_Local", "CN_All", "DK_Local", "FR_Local", "DE_Local",  ... ],
    "regular" : [ "BR_Local", "CA_Local", "PT_Mobile", "RE_Local", "RO_Mobile", "SM_Local", "SG_All", "VE_Local",  ...]
  }
}

Get a list of countries eligible to be called for free, subject to your plans’ voice/minutes limit.

Response results
Path Type Description
destinations Object All available destinations
destinations.*.countryIsoCode String ico code for specific type
destinations.*.description String Short description
unlimitedVoiceBalance Object Countries with unlimited calls within given plan
unlimitedVoiceBalance.regular Array Countries with unlimited calls in regular plan
unlimitedVoiceBalance.call_forwarding Array Countries with unlimited calls in call forwarding plan
destinationGroups Object Available countries per plan
destinationGroups.free Array Countries in free plan
destinationGroups.basic Array Countries in basic plan
destinationGroups.regular Array Countries in regular plan
destinationGroups.call_forwarding Array Countries in call forwarding plan

Subscription

Example request:

GET /api/v1/finance/subscription HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Example response:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 481

{
  "type" : "CRAZYCALL",
  "status" : "ACTIVE",
  "plan" : "FSksFgT",
  "planId" : "9c1L80f",
  "quantity" : 10,
  "voiceBalanceSeconds" : 30000,
  "discountPercentage" : 10,
  "discountType" : "FOREVER",
  "discountValid" : true,
  "periodStart" : 1707650322,
  "periodEnd" : 1710242322,
  "destinationCountriesCount" : 90,
  "cancelAtPeriodEnd" : false,
  "planCurrency" : "USD",
  "trial" : false,
  "discountDollars" : 10.0,
  "planPrice" : 0.95,
  "subscriptionPrice" : 9.5
}

Receive your current subscription. Remember - when you try to upgrade plan it will be available after old subscription expired.

Response results
Path Type Description
plan String Plan’s name
status class com.crazycall.subscription.model.SubscriptionStatus Subscription status
planPrice Number Basic price for this plan (per user)
planCurrency String Currency of the plan in ISO 4217 format
quantity Number Amount of money available now
voiceBalanceSeconds Number Time (in seconds) of free calls
discountPercentage Number Available discount’s percentage
discountType class com.crazycall.subscription.model.DiscountType One of FOREVER, ONCE, and REPEATING
discountValid Boolean Applied coupon is still valid
discountDollars Number Available amount of discount
periodStart Number Date (in millis) when subscription started
periodEnd Number Date (in millis) when subscription will end
destinationCountriesCount Number Number of countries for voice balance
trial Boolean Is this subscription a trial
subscriptionPrice Number Total price of this subscription
cancelAtPeriodEnd Boolean Is the subscription scheduled for cancellation

Reports

Download the reports for your calls and effectiveness.

Example request:

GET /api/v1/reports?dateFrom=2024-02-16&dateUntil=2024-02-21&timezoneOffsetMinutes=-120&reportTypes=DAILY_CONTACT_STATUS&reportTypes=BILLINGS&reportTypes=LAST_CONTACT_EVENTS_DUMP&projectIds=8&projectIds=9 HTTP/1.1
x-api-token: your-secret-api-key
Account: your-account-hash.crazycall.com
Host: api.crazycall.com

Request parameters
Parameter Description
dateFrom (required) The date from which reports will be generated (e.g. 2017-12-12)
dateUntil (required) The finish date of generated reports (e.g. 2017-12-12)
projectIds Project’s ids for which will be generated report. Required non-null value for project report. Required null value for overall report.
timezoneOffsetMinutes Time offset from UTC (in minutes, can be negative, default 0)
reportTypes (required) Type of reports to generate (see the descriptions below)
Example response:

HTTP/1.1 200 OK
Content-Type: application/zip;charset=UTF-8
Reports-Total: 4
Reports-Success: 2
Reports-Empty: 2
Reports-Empty-Name: SCRIPT_ANSWERS
Reports-Empty-Name: BILLINGS
Content-Disposition: attachment; filename="reports_2017-10-26.zip"
Content-Length: 6806

the content will be a file with reports (application/x-ms-excel if only one file is generated, application/zip otherwise)


reportTypes parameter is an array. We will accept both reportTypes=TYPE1&reportType=TYPE2 and reportTypes=TYPE1,TYPE2 formats.

As a response, you will receive a file with reporting data. If only one report is selected, the file will be in .xlsx format. Otherwise, the compressed .zip file will be downloaded with all selected reports as .xlsx.
If we cannot generate any report (due to lack of data - for example, no calls were made in the selected date range) there will be an empty response with 0 as value for Reports-Success header.

The response contains Content-Disposition header with the report’s filename. It will match this pattern: {REPORT_NAME}_{CURRENT_DATE}.xlsx, (e.g. Effectiveness report_2017-10-26.xlsx) for one report and reports_{CURRENT_DATE}.zip for .zip file with {REPORT_NAME}.xlsx reports.


Additional headers

Header Description
Reports-Total Number of all downloaded reports
Reports-Empty Number of empty reports (we were unable to generate it due to the lack of data)
Reports-Success Number of downloaded reports with data
Reports-Empty-Name Types of empty reports


Possible errors
Error key Description
DATE_EMPTY Cannot find dateFrom or dateUntil in your request
REPORT_TYPES_EMPTY Cannot find any report type
PARAM_UNEXPECTED Cannot generate overall report with given project’s id
PROJECT_DOES_NOT_EXIST Cannot find project with given id
REPORT_NOT_IN_BACKWARD_DAYS_RANGE Your plan doesn’t allow to get reports from given date
REPORT_WRONG_ENTERED_DATES Invalid range - dateFrom is after dateUntil
HOURS_OUT_OF_RANGE timezoneOffsetMinutes value is above 1439 (one day in minutes)

Agent activity

Report Type: AGENT_ACTIVITY

Activity report lets you see how your agents performed on a given day or within a selected date range. It includes the statistics regarding the outbound and inbound calls made and taken by the agent, as well, as data on how the agent spent his time making and taking calls.

Here you will also find information about incoming calls and how many were answered, as well as, the number of outbound calls made and how many of those were picked up.

There are 17 constant elements in this report and here’s how to understand them:

Agent work time

Report Type: AGENT_WORKTIME

Agent work time report lets you know how long your agents were actually calling customers and how long they spent on pause. The work time is counted right after the agent has logged into the Call Panel (or Chrome Extension) and chosen a project till he or she stopped calling and logged out of the Call Panel (or Chrome Extension).

This is how to understand the terms used in this report:



To know for how long the agent was logged into the Call Panel (or Chrome Extension), you need to sum up the values from the second and third column.

The final appearance, name, and the number of columns in the report depend on the number of pauses taken by the agent. If you generate the report for a specific date range, each day will appear in a separate tab.

Billings

Report Type: BILLINGS

With this report, you can see how much time each call takes and costs. It is counted from the moment your contact answers the call until the moment he or she hangs up. The time waiting for the answer and the time after the call is excluded.

Call cost summary (Overall report)

Report Type: CALL_COST_SUMMARY

A very similar report to Billings report, but here you will be able to see the whole billing history on the account, from every project, even if the project was deleted the information about the costs will be saved here.

This is how to understand the terms used in this report:

Daily contact status

Report Type: DAILY_CONTACT_STATUS

Daily contact status report presents daily information on the imported contacts. Use it to see how many of them are open, scheduled, auto-scheduled, etc. at the beginning of each day.

The number and names of columns always remain the same and are as following:

Effectiveness

Report Type: EFFECTIVENESS

Thanks to the Effectiveness report you can measure the most important Key Performance Indicators (KPIs) like Contact Rate, Hit Rate, Success Rate, number of called, answered, and closed contacts. You can generate this report for a selected date range.

Here’s how to understand the terms used in this report:


Note: Voicemail is not considered as a contact answered by the customer.

Events

Report Type: EVENTS

An event in CrazyCall is an action that happens in relation to a given contact. This could be anything, from call attempt to closing with a success status.

Events report summarizes all these actions in one place.
This report contains two separate tabs. First being the Instructions tab in which you’ll find an explanation of what you can find in the report and the second being the report itself.

Here’s how to understand the terms used in this report:



Additionally, the report may contain imported customer data. The final appearance, names, and the number of columns in the report will depend on the imported file.

You may notice that your report contains columns with empty values. This can happen if your project includes several imports with different file structures, e.g. with varying number of columns or names.

Last contact events dump

Report Type: LAST_CONTACT_EVENTS_DUMP

Last contact events dump report presents detailed information on the recent events that happened to a contact. For each contact you’ll see the following details: time of the call, its length, phone number, call status and the name of the agent who handled that call.

Let’s say, a call gets rescheduled at 2 pm. At 4 pm. the same day the same contact is marked with the Save Success status. With the Last Contact Events Dump Report you’ll see the latest event, which in this case is the success.

The number and names of columns in this report are constant and here’s how to understand them:

Script answers

Report Type: SCRIPT_ANSWERS

Probably the most information-packed report at the moment. Here you can find the uploaded data of the contact, duration of the call, notes, contact and event status, and, as the name suggests, the script answers.
This report contains two separate tabs. First being the Instructions tab in which you’ll find an explanation of what you can find in the report and the second being the report itself.

This is how to understand the terms used in this report:

Besides the above columns you’ll also find additional ones containing the scripts answers provided by the agent. Additionally, the report may contain imported customer data.

You may notice that your report contains columns with empty values. This can happen if your project includes several imports with different file structures, e.g. with varying number of columns or names.

Webhooks

Webhooks allow you to configure a URL that will be notified every time an event occurs on your account. When one of the events you subscribe to happens, crazycall will send a json object representing that event through a HTTP POST request to your webhooks URL.

Webhook configuration

To find webhook settings, click on your Account icon in the top right corner, then select For Developers. There, you can find “Webhooks” section. You can either edit your existing webhook configurations, disable them, or click “Add Webhook” at the top of the page to add a new configuration.


There are four sections that you have to fill:

  1. Project - webhooks are created for a project. Select one from the dropdown.
  2. Event types - select at least one of the event types you want to subscribe to. They are described in more detail below. You can choose any number of types.
  3. Webhook name - select a unique name you will identify your webhook by, like “Stats app notification”
  4. URL - provide an address that events should be sent to.

Responding to webhook

We do not expect any response from the endpoint you configure. You can respond with a customary HTTP 200 code, however this is not required. We currently do not support resending events that were failed to be properly delivered.

Event types

This is a list of all the types of events we currently send. We may add more at any time, so you shouldn’t rely on only these types existing in your code.

Here’s a list of dictionaries common to most event types described below.

Contact statuses

status Description
AUTOSCHEDULED Autoscheduled
CLOSED Closed
NOT_VERIFIED Not verified
OPEN Open
SCHEDULED Scheduled


Contact sources

source Description
API Api
WEBHOOK Webhook
INCOMING Incoming call
WIDGET Widget
LEAD Lead generation

  Call finished

Sent always when a call is finished, regardless of its result. If the call was answered, this webhook will contain a URL link to the recording file. This means that calls that are handled by this webhook automatically have public recording links. Please see Call Recordings section for more details.

Example response body:


{
  "id" : 6705782096906236976,
  "contact" : {
    "id" : 7332858818067584057,
    "createdAt" : "2024-02-21T11:18:48.771+00:00",
    "projectId" : 460718215239467491,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "koMjMj",
      "externalLink" : "http://www.crazycall.com",
      "company" : "YOVDnF",
      "detail" : "KDIcxr",
      "email" : "snVJvDYEOAal@jfngcibbYEHh.com",
      "lastname" : "lfwmkA"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.771+00:00",
    "externalServices" : null
  },
  "msisdn" : "+48717221111",
  "agentMsisdn" : "+14153661222",
  "agentMsisdnId" : 6323610474068845996,
  "startDate" : "2024-02-21T11:11:48.770+00:00",
  "answeredDate" : "2024-02-21T11:13:48.770+00:00",
  "transferDate" : null,
  "finishDate" : "2024-02-21T11:16:48.770+00:00",
  "length" : 180,
  "finishType" : "FINISHED_BY_AGENT",
  "agentId" : 5078586672066375600,
  "agentName" : "Name",
  "agentSurname" : "Surname",
  "agentUsername" : "eMnFCZTFKGAH@zAKYNxMPhGOq.com",
  "recordingLink" : "http://www.crazycall.com/recording123",
  "direction" : "OUTBOUND",
  "lastEventType" : "SUCCESS",
  "appType" : "WIDGET",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  }
}
Response results
Path Type Description
id Number Call Id
direction String Direction of the call. Can be either INBOUND or OUTBOUND
agentUsername String Username (typically email) of the user who created an event
agentId Number User ID of the agent who participated in the call
agentName String Name of the agent who participated in the call
agentSurname String Surname of the agent who participated in the call
agentMsisdnId Number ID of the phone number that agent was identified by during the call
agentMsisdn String Phone number that agent was identified by during the call
msisdn String Phone number of the client
recordingLink String URL link to the recording file
startDate String Date when the call was initialized by either party
answeredDate String Date when the call was answered (either by the client for direction OUTBOUND or by an agent for INBOUND)
finishDate String Date when the call was finished (e.h. either party hung up)
transferDate Null Date when the call was transferred to another phone number (if it happened)
length Number Length of the call in seconds
appType String Application used by the agent to handle the call. Can be either BROWSER, WIDGET or MOBILE
finishType String Reason why the call was finished
lastEventType String Last event set by an agent or the system after the call has ended
callDetails Object Additional details related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null


Finish type

Finish type Description
BUSY Busy
NOT_ANSWERED Not answered
FAILED Call failed
INCOMING_CALL_FAILED Incoming call was not handled
INCOMING_CALL_VOICEMAIL No agents handled the call. Voicemail prompt was played.
MAX_CALL_DURATION_EXCEEDED Call was too long
VOICE_MAIL_DROP Agent played voicemail drop message
FINISHED_BY_AGENT Agent hungup
FINISHED_BY_CLIENT Client hung up
FAILED_CONNECT_AGENT Failed to connect to agents browser
INSUFFICIENT_FUNDS Insufficient funds on the account


Last event type

Last event type Description
SCHEDULE a call has been manually scheduled to a particular date and time by an agent
SUCCESS contact has been closed and marked as a success. Usually, it means the goal of the call has been reached
REFUSE contact has been closed with a custom status created by a user. It can take any value
FAILED_CONTACT a call didn’t connect to a person. It can be due to several reasons - agent reached a voicemail, the line was busy, a call has been not answered, agent disconnected before reached a person or network error
NOT_VERIFIED this is an automated status, which is set whenever an agent has not set any status during a call
INCOMING_CALL_STATUS an incoming call marked with a custom status created by a user. By default, it’s “Incoming call”
VOICE_MAIL_DROP an agent has decided to play a pre-recorded message and disconnect the call

  Close contact

Sent when you closed a contact

Example response body:


{
  "id" : 5896180369210232927,
  "createdAt" : "2024-02-21T11:18:48.828+00:00",
  "type" : "CLOSE_CONTACT",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contact" : {
    "id" : 2189152986649774875,
    "createdAt" : "2024-02-21T11:18:48.828+00:00",
    "projectId" : 270970746084599261,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "rHzwoE",
      "externalLink" : "http://www.crazycall.com",
      "company" : "FWDlPX",
      "detail" : "RjLECk",
      "email" : "LzcPBjPxniCL@RBPseMKqJIeh.com",
      "lastname" : "xkIFrc"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.828+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always CLOSE_CONTACT)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null

  Conference call

Sent when you created a conference call

Example response body:


{
  "id" : 3917900900455230308,
  "createdAt" : "2024-02-21T11:18:48.502+00:00",
  "type" : "CONFERENCE_CALL",
  "callId" : 5739042705011871727,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "conferenceMsisdn" : "+48717221111",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "note" : "biuCMxbPgfH",
  "contact" : {
    "id" : 1105307603088272825,
    "createdAt" : "2024-02-21T11:18:48.502+00:00",
    "projectId" : 680150962714584562,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "cqwTBJ",
      "externalLink" : "http://www.crazycall.com",
      "company" : "ASqSKH",
      "detail" : "Unrwud",
      "email" : "TraOcZBolwVs@rmSoeOGrDiiX.com",
      "lastname" : "XFSIiH"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.502+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always CONFERENCE_CALL)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number Id of the call that initiated the conference
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String Phone number of the contact that initiated the call
crazyCallMsisdn String Phone number assigned to your project when the call happened
conferenceMsisdn String Number with which the conference was established
note String Note added during the conference

  Config change event

Sent when you change the number on one of your contacts.

Example response body:


{
  "id" : 6268023921834898502,
  "createdAt" : "2024-02-21T11:18:48.958+00:00",
  "type" : "MSISDN_CONFIG_CHANGE",
  "callId" : 5531195333369090225,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "newMsisdn" : "+14153661222",
  "oldMsisdn" : "+48717221111",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "note" : "SsmkNtEdnBu",
  "contact" : {
    "id" : 6842083666339117218,
    "createdAt" : "2024-02-21T11:18:48.958+00:00",
    "projectId" : 8065987352817837521,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "CHmQjP",
      "externalLink" : "http://www.crazycall.com",
      "company" : "QwORMQ",
      "detail" : "uEjnBC",
      "email" : "BKvWTpeNfkba@VJXmvgPqmfgG.com",
      "lastname" : "azPhGX"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.958+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always MSISDN_CONFIG_CHANGE)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number For a change that happened during a call, the relevant call id (optional)
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String For a change that happened during a call, the called contact’s phone number (optional)
crazyCallMsisdn String For a change that happened during a call, phone number assigned to your project when the call happened (optional)
oldMsisdn String Previous number
newMsisdn String Updated msisdn (current for contact)
note String Note added while changing number (optional)

  Contact details change

Sent when you updated custom information about your contact

Example response body:


{
  "id" : 2846249240007057889,
  "createdAt" : "2024-02-21T11:18:48.597+00:00",
  "type" : "CONTACT_DETAILS_CHANGE",
  "callId" : 6969121515653951866,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "contact" : {
    "id" : 8585638777688011414,
    "createdAt" : "2024-02-21T11:18:48.597+00:00",
    "projectId" : 8335340491169590930,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "humMPC",
      "externalLink" : "http://www.crazycall.com",
      "company" : "BJcbZa",
      "detail" : "xjmmGj",
      "email" : "bepOhaEkikbi@zKinoUcCPdyH.com",
      "lastname" : "cUNSrJ"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.597+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always CONTACT_DETAILS_CHANGE)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number For a change that occurred during a call, the relevant call id (optional)
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String For a change that occurred during a call, the called contact’s phone number (optional)
crazyCallMsisdn String For a change that occurred during a call, phone number assigned to your project when the call happened (optional)

  Delete contact

Sent when you removed a contact

Example response body:


{
  "id" : 6141367139573954375,
  "createdAt" : "2024-02-21T11:18:49.058+00:00",
  "type" : "DELETE_CONTACT",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contact" : {
    "id" : 5276717765720838088,
    "createdAt" : "2024-02-21T11:18:49.058+00:00",
    "projectId" : 2037482688767608429,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "VMzLBg",
      "externalLink" : "http://www.crazycall.com",
      "company" : "VzffvQ",
      "detail" : "qWyYbv",
      "email" : "wTiRnnsQRQQc@PgdFdwSxANGM.com",
      "lastname" : "eNAZkw"
    },
    "lastModificationDate" : "2024-02-21T11:18:49.058+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always DELETE_CONTACT)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null

  Failed contact

Sent when you attempted a call, but you didn’t reach your contact for whatever reason, like the contact is unavailable or decided to not pickup your call.

Example response body:


{
  "id" : 5947439374330999885,
  "createdAt" : "2024-02-21T11:18:48.713+00:00",
  "type" : "FAILED_CONTACT",
  "reason" : "VOICE_MAIL",
  "callId" : 5555695928110824370,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "contact" : {
    "id" : 559521741735570415,
    "createdAt" : "2024-02-21T11:18:48.713+00:00",
    "projectId" : 1058893881054159842,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "oiWPlm",
      "externalLink" : "http://www.crazycall.com",
      "company" : "XgPRqM",
      "detail" : "WPAxWZ",
      "email" : "gkxzdZnOCKmq@YOjEshwiFrtp.com",
      "lastname" : "GxdxwB"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.713+00:00",
    "externalServices" : null
  },
  "scheduleDate" : "2024-02-23T11:18:48.713+00:00"
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always FAILED_CONTACT)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number Call id for a call that was attempted but failed
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String Contact’s phone number
crazyCallMsisdn String Phone number assigned to your project when the call happened
scheduleDate String Scheduled date of next contact
reason String Failed reason


Failed reasons

Reason Description
VOICE_MAIL Voice mail
BUSY Busy
NOT_ANSWERED Not answered
UNAVAILABLE_MSISDN Unavailable msisdn
NETWORK_ERROR Network error
NO_MSISDN_TO_CALL No msisdn to call
FAILED_CONNECT_AGENT Failed connect agent
INSUFFICIENT_FUNDS Insufficient funds

  Import contact

Sent when you created new contacts through the “Load contacts” wizard in your project

Example response body:


{
  "id" : 4692537878046769587,
  "createdAt" : "2024-02-21T11:18:48.800+00:00",
  "type" : "IMPORT_CONTACT",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contact" : {
    "id" : 912316619844106974,
    "createdAt" : "2024-02-21T11:18:48.800+00:00",
    "projectId" : 3267667101589088075,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "UzZnXl",
      "externalLink" : "http://www.crazycall.com",
      "company" : "lRyCPy",
      "detail" : "pHBcJL",
      "email" : "tYdGhNzHIRoa@FTEvoDiUUCNt.com",
      "lastname" : "xBigXH"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.800+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always IMPORT_CONTACT)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null

  Incoming call

Sent when someone attempted a call to one of the numbers associated with your projects. This event is also sent for failed calls, so whether you actually received the call or weren’t available

Example response body:


{
  "id" : 2884693786421002494,
  "createdAt" : "2024-02-21T11:18:48.987+00:00",
  "type" : "INCOMING_CALL_STATUS",
  "customStatus" : "INCOMING_CALL_STATUS.REDIRECT_INCOMING_CALL",
  "callId" : 8898108864843369989,
  "callDirection" : "INBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "redirectMsisdn" : "+48717221111",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "note" : "rLXhFYtBXwq",
  "answerResults" : {
    "Question1" : [ "Answer1", "Answer2" ],
    "Question2" : [ "Answer1" ],
    "Question3" : [ "2024-02-21T11:18:48.987Z" ]
  },
  "contact" : {
    "id" : 2945595408520873514,
    "createdAt" : "2024-02-21T11:18:48.987+00:00",
    "projectId" : 942167738131168422,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "Ebucma",
      "externalLink" : "http://www.crazycall.com",
      "company" : "mkogKL",
      "detail" : "QoNfPx",
      "email" : "sXKwVjgglRaF@vUpQqUdECZMr.com",
      "lastname" : "JidPWZ"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.987+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always INCOMING_CALL_STATUS)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number Call id of the call
callDirection String Type of call, always INBOUND
contactMsisdn String Contact’s phone number
crazyCallMsisdn String Phone number assigned to your project when the call happened
redirectMsisdn String Number to redirect to, according to rules setup for this crazyCall number (optional)
customStatus String Status assigned to this call
note String If note was created during a call, the text contents of the note (optional)
answerResults Object Answers to the script

  Incoming call started

Sent when a call is being answered by the agent, regardless if it has been answered in CrazyCall or as a forwarded call.

Example response body:


{
  "id" : 6624315468560505945,
  "contact" : {
    "id" : 7889634188355161258,
    "createdAt" : "2024-02-21T11:18:48.684+00:00",
    "projectId" : 3197901154998145123,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "IJQdDQ",
      "externalLink" : "http://www.crazycall.com",
      "company" : "kxCWDG",
      "detail" : "aXgPzk",
      "email" : "npMuQCDrsAIO@hxhuIxnBMPcb.com",
      "lastname" : "xwMvIL"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.684+00:00",
    "externalServices" : null
  },
  "msisdn" : "+48717221111",
  "agentMsisdn" : "+14153661222",
  "agentMsisdnId" : 1866978226490768760,
  "startDate" : "2024-02-21T11:11:48.684+00:00",
  "answeredDate" : "2024-02-21T11:12:48.684+00:00",
  "transferDate" : null,
  "finishDate" : "2024-02-21T11:16:48.684+00:00",
  "length" : 0,
  "finishType" : "FINISHED_BY_CLIENT",
  "agentId" : 9002319625225809281,
  "agentName" : "Name",
  "agentSurname" : "Surname",
  "agentUsername" : "GxkjOtKSTKFt@amRNoQoYRqaH.com",
  "recordingLink" : null,
  "direction" : "INBOUND",
  "lastEventType" : "SUCCESS",
  "appType" : "BROWSER",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  }
}
Response results
Path Type Description
id Number Call Id
direction String Direction of the call. In this scenario it will always be INBOUND
agentUsername String Username (typically email) of the user who created an event
agentId Number User ID of the agent who participated in the call
agentName String Name of the agent who participated in the call
agentSurname String Surname of the agent who participated in the call
agentMsisdnId Number ID of the phone number that agent was identified by during the call
agentMsisdn String Phone number that agent was identified by during the call
msisdn String Phone number of the client
startDate String Date when the call was initialized by either party
answeredDate String Date when the call was answered by an agent
finishDate String Date when the call was finished (e.h. either party hung up)
length Number Length of the call in seconds
appType String Application used by the agent to handle the call. Can be either BROWSER, WIDGET or MOBILE
finishType String Reason why the call was finished
lastEventType String Last event set by an agent or the system
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null

  Voice message left

Voice message left

Example response body:


{
  "id" : 6260228718640996064,
  "contact" : {
    "id" : 5380348761582414576,
    "createdAt" : "2024-02-21T11:18:48.742+00:00",
    "projectId" : 4185965657929387482,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "OpXZKv",
      "externalLink" : "http://www.crazycall.com",
      "company" : "YZiigs",
      "detail" : "EsdAFp",
      "email" : "KNThgWggqRVG@KVsEJTikdZAE.com",
      "lastname" : "rselwC"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.742+00:00",
    "externalServices" : null
  },
  "msisdn" : "+48717221111",
  "agentMsisdn" : null,
  "agentMsisdnId" : null,
  "startDate" : "2024-02-21T11:11:48.742+00:00",
  "answeredDate" : "2024-02-21T11:12:48.742+00:00",
  "transferDate" : null,
  "finishDate" : "2024-02-21T11:16:48.742+00:00",
  "length" : 240,
  "finishType" : "INCOMING_CALL_VOICEMAIL",
  "agentId" : null,
  "agentName" : null,
  "agentSurname" : null,
  "agentUsername" : null,
  "recordingLink" : "http://www.crazycall.com/recording123",
  "direction" : "INBOUND",
  "lastEventType" : "INCOMING_CALL_STATUS",
  "appType" : null,
  "callDetails" : null
}
Response results
Path Type Description
id Number Call Id
direction String Direction of the call. In this scenario it will always be INBOUND
msisdn String Phone number of the client
startDate String Date when the call was initialized by either party
answeredDate String Date when the call was answered by an agent
finishDate String Date when the call was finished (e.h. either party hung up)
length Number Length of the call in seconds
finishType String Reason why the call was finished. In this scenario it will always be INCOMING_CALL_VOICEMAIL
lastEventType String Last event set by an agent or the system. In this scenario it will always be INCOMING_CALL_STATUS
recordingLink String URL link to the recording file
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null

  Not verified

Sent when something unexpected happened during a call. These should be rare. You should review them later.

Example response body:


{
  "id" : 3230811024046578058,
  "createdAt" : "2024-02-21T11:18:48.885+00:00",
  "type" : "NOT_VERIFIED",
  "callId" : 8557084864773156079,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "contact" : {
    "id" : 5645140749344165221,
    "createdAt" : "2024-02-21T11:18:48.885+00:00",
    "projectId" : 8108847584889448180,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "UdkRfp",
      "externalLink" : "http://www.crazycall.com",
      "company" : "lhvwZr",
      "detail" : "kWQurp",
      "email" : "gCgtSYKPQqdi@NNbPQvBsUDSe.com",
      "lastname" : "SojiOd"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.885+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always NOT_VERIFIED)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number Call id for a call that was attempted but its status and results should be reviewed
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String Contact’s phone number
crazyCallMsisdn String Phone number assigned to your project when the call happened

  Note

Sent when an incoming call hasn’t been answered and a client has left a voicemail. It can only happen if it’s allowed in the phone number settings.

Example response body:


{
  "id" : 2191351564943247466,
  "createdAt" : "2024-02-21T11:18:48.422+00:00",
  "type" : "NOTE",
  "callId" : 1572035616241318938,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "note" : "YxdipfBNWEO",
  "contact" : {
    "id" : 2826601970720499796,
    "createdAt" : "2024-02-21T11:18:48.423+00:00",
    "projectId" : 2766089497742898549,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "xyXXiQ",
      "externalLink" : "http://www.crazycall.com",
      "company" : "aXXfEq",
      "detail" : "DpfTpr",
      "email" : "XidcuVugpeZE@TswCwAvUXKSr.com",
      "lastname" : "mdyXdR"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.423+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always NOTE)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number For a note that was created during a call, the relevant call id (optional)
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String For a note that was created during a call, the called contact’s phone number (optional)
crazyCallMsisdn String For a note that was created during a call, phone number assigned to your project when the call happened (optional)
note String Actual note

  Open contact

Sent when you opened a contact

Example response body:


{
  "id" : 8791319488809276354,
  "createdAt" : "2024-02-21T11:18:48.542+00:00",
  "type" : "OPEN_CONTACT",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contact" : {
    "id" : 1722408675282556413,
    "createdAt" : "2024-02-21T11:18:48.542+00:00",
    "projectId" : 3998652847271070975,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "kuvoHh",
      "externalLink" : "http://www.crazycall.com",
      "company" : "lkehzn",
      "detail" : "dhkAFz",
      "email" : "DwrTVnlEfXfM@quMtssGAnuny.com",
      "lastname" : "inrJfg"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.542+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always OPEN_CONTACT)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null

  Refuse event

Sent when you mark a call as refused and you choose a reason for refusal.

Example response body:


{
  "id" : 503628982459574003,
  "createdAt" : "2024-02-21T11:18:49.018+00:00",
  "type" : "REFUSE",
  "callId" : 7613322333466869224,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "answerResults" : {
    "Question1" : [ "Answer1", "Answer2" ],
    "Question2" : [ "Answer1" ],
    "Question3" : [ "2024-02-21T11:18:49.018Z" ]
  },
  "refuseReason" : {
    "id" : 7016813437045143300,
    "name" : "pMoeh",
    "projectId" : 7955270451235042495,
    "type" : "CALL_PANEL"
  },
  "contact" : {
    "id" : 2706105818085589398,
    "createdAt" : "2024-02-21T11:18:49.018+00:00",
    "projectId" : 951063547028930367,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "QGORoX",
      "externalLink" : "http://www.crazycall.com",
      "company" : "IwwSEn",
      "detail" : "lWYFhP",
      "email" : "PnleAwgUkpiQ@pDtHKCXpgTuj.com",
      "lastname" : "smpING"
    },
    "lastModificationDate" : "2024-02-21T11:18:49.018+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always REFUSE)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number Call id during which the refusal happened
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String Contact’s phone number
crazyCallMsisdn String Phone number assigned to your project when the call happened
refuseReason.id Number Refuse reason’s id
refuseReason.name String Refuse reason’s name
refuseReason.projectId Number Id of the project where contact is assigned
refuseReason.type String Type of refuse reason (CALL_PANEL or WIDGET)
answerResults Object Answers to the script

  Schedule event

Sent when you schedule another date during a call.

Example response body:


{
  "id" : 7809258009204146987,
  "createdAt" : "2024-02-21T11:18:49.087+00:00",
  "type" : "SCHEDULE",
  "callId" : 4277171341196982115,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "note" : "ZeQMAlaOPBX",
  "answerResults" : {
    "Question1" : [ "Answer1", "Answer2" ],
    "Question2" : [ "Answer1" ],
    "Question3" : [ "2024-02-21T11:18:49.087Z" ]
  },
  "contact" : {
    "id" : 4709284218549799484,
    "createdAt" : "2024-02-21T11:18:49.087+00:00",
    "projectId" : 6476327335396816527,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "xgFtWT",
      "externalLink" : "http://www.crazycall.com",
      "company" : "bMvWmD",
      "detail" : "ccuCwU",
      "email" : "yEADYbklpmma@lPMKrtAQOttm.com",
      "lastname" : "tHEXMA"
    },
    "lastModificationDate" : "2024-02-21T11:18:49.087+00:00",
    "externalServices" : null
  },
  "scheduleDate" : "2024-02-23T11:18:49.087+00:00"
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always SCHEDULE)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number Call id during which the scheduling happened
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String Contact’s phone number
crazyCallMsisdn String Phone number assigned to your project when the call happened
note String Note added while scheduling contact
scheduleDate String Schedule date
answerResults Object Answers to the script

  Success event

Sent when you make a call and mark it a success (for example go through a script and record all answers).

Example response body:


{
  "id" : 3070858477745652748,
  "createdAt" : "2024-02-21T11:18:48.913+00:00",
  "type" : "SUCCESS",
  "callId" : 4062931383822462662,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "answerResults" : {
    "Question1" : [ "Answer1", "Answer2" ],
    "Question2" : [ "Answer1" ],
    "Question3" : [ "2024-02-21T11:18:48.913Z" ]
  },
  "contact" : {
    "id" : 1394562328314479194,
    "createdAt" : "2024-02-21T11:18:48.913+00:00",
    "projectId" : 3721676730336331703,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "KlFykL",
      "externalLink" : "http://www.crazycall.com",
      "company" : "uLgmFu",
      "detail" : "eTOAiQ",
      "email" : "RWUxInPxrUUN@iRDHthZErMOD.com",
      "lastname" : "julhru"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.913+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always SUCCESS)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number Call id during which the success happened
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String Contact’s phone number
crazyCallMsisdn String Phone number assigned to your project when the call happened
answerResults Object Answers to the script

  Transfer call

Sent when you used the transfer option during a call

Example response body:


{
  "id" : 5676603071582202517,
  "createdAt" : "2024-02-21T11:18:48.473+00:00",
  "type" : "TRANSFER_CALL",
  "callId" : 9189259587133468690,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "transferMsisdn" : "+14153661222",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "note" : "qrVISudeNEU",
  "contact" : {
    "id" : 6879947449473473402,
    "createdAt" : "2024-02-21T11:18:48.473+00:00",
    "projectId" : 7923084343925604473,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "AZdxxd",
      "externalLink" : "http://www.crazycall.com",
      "company" : "btPmSg",
      "detail" : "fTWaOt",
      "email" : "VyaXjxJEnrSF@SsIhioRMkWxQ.com",
      "lastname" : "rVLVya"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.473+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always TRANSFER_CALL)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number Id of the call that was later transferred
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String Phone number of the contact that initiated the call that was later transferred
crazyCallMsisdn String Phone number assigned to your project when the call happened
transferMsisdn String Number where call was transferred
note String Note added during a call that was later transferred

  Voice Drop

Sent when you used the voice drop option during a call and you leave predefined message.

Example response body:


{
  "id" : 426919585823314054,
  "createdAt" : "2024-02-21T11:18:48.569+00:00",
  "type" : "VOICE_MAIL_DROP",
  "callId" : 4307068195040182566,
  "callDirection" : "OUTBOUND",
  "callDetails" : {
    "key" : "value",
    "numeric" : 7
  },
  "agentUsername" : "email@email.com",
  "userName" : "Name",
  "userSurname" : "Surname",
  "contactMsisdn" : "+33980091888",
  "crazyCallMsisdn" : "+3225889300",
  "contact" : {
    "id" : 1553696854964188029,
    "createdAt" : "2024-02-21T11:18:48.569+00:00",
    "projectId" : 3686596930309055642,
    "status" : "OPEN",
    "source" : "WIDGET",
    "primaryMsisdn" : "+33980091888",
    "alternativeMsisdns" : [ "+16475586333" ],
    "details" : {
      "firstname" : "BIJDDA",
      "externalLink" : "http://www.crazycall.com",
      "company" : "gFdfab",
      "detail" : "nJQTUa",
      "email" : "QbcfiwuWrmzP@nudxucmqrFzG.com",
      "lastname" : "WNiojJ"
    },
    "lastModificationDate" : "2024-02-21T11:18:48.569+00:00",
    "externalServices" : null
  }
}
Response results
Path Type Description
id Number Contact event id
type String Type of event (always VOICE_MAIL_DROP)
createdAt String When event was created
agentUsername String Username (typically email) of the user who created event
userName String Name of the user who created event
userSurname String Surname of the user who created event
callDetails Object Additional information related to the call
contact.id Number Contact id
contact.createdAt String Contact’s import date
contact.projectId Number Id of the project contact was imported into
contact.status String Current contact’s status
contact.source String Import source (optional)
contact.primaryMsisdn String Primary phone number (optional)
contact.alternativeMsisdns Array List of alternative phone numbers assigned to contact (optional)
contact.details Object Details of the contact
contact.details.firstname String Contact’s firstname
contact.details.lastname String Contact’s lastname
contact.details.company String Contact’s company name
contact.details.email String Contact’s email
contact.details.detail String Custom contact detail
contact.details.externalLink String External link related to the contact
contact.lastModificationDate String Date of the most recent modification
contact.externalServices Null
callId Number Id of the call which ended with the voice drop
callDirection String Type of call, can be: INBOUND or OUTBOUND
contactMsisdn String Contact’s phone number
crazyCallMsisdn String Phone number assigned to your project when the call happened