NAV
shell javascript python php

Introduction

The Scal-e API provides programmatic access to the Scal-e Customer Data Platform (CDP).

It enables applications to retrieve, insert, and update data within the platform.

All endpoints are scoped to a specific instance using the INSTANCE_ID parameter.

Data formats

Environment URLs

The API is available in multiple environments.

Environment Base URL
Production https://api.scal-e.com
Demo https://api-demo.scal-e.com

All requests use the following format:

https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/...

Authentication

The Scal-e API uses Bearer authentication.

All requests must include a valid access token in the Authorization header.

Authorization: Bearer <API_TOKEN>

If you do not have an API token, please contact your administrator or Scal-e support to obtain one.

Data

Get Object List

Allows you to retrieve the list of available objects within your CDP (Customer Data Platform) based on the access rights defined in your API profile.

Request

GET https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_object_list

curl --location --request GET "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_object_list" \
--header "Authorization: Bearer <API_TOKEN>"
import requests

url = "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_object_list"

payload={}
headers = {
  'Authorization': 'Bearer <API_TOKEN>'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_object_list',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer <API_TOKEN>'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
var https = require('follow-redirects').https;
var fs = require('fs');

var options = {
  'method': 'GET',
  'hostname': '{BASE_URL}',
  'path': '/v1/datamart/{INSTANCE_ID}/get_object_list',
  'headers': {
    'Authorization': 'Bearer <API_TOKEN>'
  },
  'maxRedirects': 20
};

var req = https.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function (chunk) {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });

  res.on("error", function (error) {
    console.error(error);
  });
});

req.end();

Response

Returns the list of Datamart objects associated with the API profile, including their creation and modification dates.

Response

{
    "contact": {
        "acl": "",
        "create_time": "2022-10-25 16:45:09",
        "update_time": "2023-01-27 01:19:17"
    },
    "orders": {
        "acl": "",
        "create_time": "2022-06-29 17:00:10",
        "update_time": "2022-07-11 14:21:04"
    },
    "products": {
        "acl": "",
        "create_time": "2022-06-29 17:00:10",
        "update_time": "2022-07-11 14:21:04"
    }
}

Get Object Data

Allows you to retrieve records of a specific object. You can also add filters with selected criteria to retrieve specific records.

Request

GET https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_objects/<OBJECT_NAME>

OBJECT_NAME is the name of the target object.

curl --location --request GET "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_objects/<OBJECT_NAME>" \
--header "Authorization: Bearer <API_TOKEN>"
import requests

url = "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_objects/<OBJECT_NAME>"

payload={}
headers = {
  'Authorization': 'Bearer <API_TOKEN>'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_objects/<OBJECT_NAME>',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer <API_TOKEN>'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
var https = require('follow-redirects').https;
var fs = require('fs');

var options = {
  'method': 'GET',
  'hostname': '{BASE_URL}',
  'path': '/v1/datamart/{INSTANCE_ID}/get_objects/<OBJECT_NAME>',
  'headers': {
    'Authorization': 'Bearer <API_TOKEN>'
  },
  'maxRedirects': 20
};

var req = https.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function (chunk) {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });

  res.on("error", function (error) {
    console.error(error);
  });
});

req.end();
Parameter Type Description
fields string displays only the defined fields (see Fields)
limit integer limit the number of the records to sent. Can be used alone or with offset
offset integer specifies the number of data to skip before starting the response.Must be used with limit
page integer Page number. Must be used with pagesize (see Paging)
pagesize integer Number of items per page. Must be used with page
sort_by string allows to sort results by one or many fields (see Ordering)
filter string allows to filter records (see Filtering)

Response

Returns records for the specified object.

Response

{
    "objects": [
        {
            "id": "109128",
            "data": {
                "Civilite": "Madame",
                "Prenom": "John",
                "Nom": "Doe",
                "EMail": "johndoe@example.net",
                "Pays": ""
            }
        },
        {
            "id": "110416",
            "data": {
                "Civilite": "Madame",
                "Prenom": "John",
                "Nom": "Doe",
                "EMail": "johndoe@example.net",
                "Pays": ""
            }
        }
    ]
}

Get Object Metadata

Allows you to retrieve metadata for the fields associated with a specific object.

Request

GET https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_object_info/<OBJECT_NAME>

OBJECT_NAME is the name of the target object.

curl --location --request GET "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_object_info/<OBJECT_NAME>" \
--header "Authorization: Bearer <API_TOKEN>"
import requests

url = "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_object_info/<OBJECT_NAME>"

payload={}
headers = {
  'Authorization': 'Bearer <API_TOKEN>'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_object_info/<OBJECT_NAME>',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer <API_TOKEN>'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
var https = require('follow-redirects').https;
var fs = require('fs');

var options = {
  'method': 'GET',
  'hostname': '{BASE_URL}',
  'path': '/v1/datamart/{INSTANCE_ID}/get_object_info/<OBJECT_NAME>',
  'headers': {
    'Authorization': 'Bearer <API_TOKEN>'
  },
  'maxRedirects': 20
};

var req = https.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function (chunk) {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });

  res.on("error", function (error) {
    console.error(error);
  });
});

req.end();

Response

Returns metadata for the specified object fields.

Field Description
created_date the creation date of the field
modified_date the last update date of the field
label field label
description field description
type field type
length variable length
is_personal_data specifies if the field is classified as a personal data field
read permission to access read
write permission to access write

Response

{
    "Adresse": {
        "attribs": {
            "created_date": "2018-07-28 16:31:28",
            "modified_date": "2021-05-20 12:43:28",
            "label": "",
            "description": "",
            "type": "text",
            "length": "100",
            "is_personal_data": "N"
        },
        "read": "Y",
        "write": "Y"
    },
    "Civilite": {
        "attribs": {
            "created_date": "2018-07-28 16:31:28",
            "modified_date": "2022-11-08 14:58:52",
            "label": "",
            "description": "",
            "type": "choice",
            "length": "16",
            "is_personal_data": "N"
        },
        "read": "Y",
        "write": "Y"
    },
    "CP": {
        "attribs": {
            "created_date": "2018-07-28 16:31:28",
            "modified_date": "2019-10-17 15:25:14",
            "label": "",
            "description": "",
            "type": "text",
            "length": "50",
            "is_personal_data": "N"
        },
        "read": "Y",
        "write": "Y"
     }
    }

Create/Update Object Data

This request is used to insert or update data in an object.

Request

POST https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<OBJECT_NAME>

OBJECT_NAME is the name of the target object.

curl --location --request POST "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<OBJECT_NAME>" \
--header "Authorization: Bearer <API_TOKEN>" \
--form "objects=[{\"data\":{\"Variable\":\"Value\"}}]"

import requests

url = "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<OBJECT_NAME>"

payload={'objects': '[{"Parameters":{"Variable":"Value"}}]'}
files=[

]
headers = {
  'Authorization': 'Bearer <API_TOKEN>'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

<?php
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<OBJECT_NAME>',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => array('objects' => '[{"Parameters":{"Variable":"Value"}}]'),
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer <API_TOKEN>'
  ),
));

$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<OBJECT_NAME>',
  'headers': {
    'Authorization': 'Bearer <API_TOKEN>'
  },
  formData: {
    'objects': '[{"Parameters":{"Variable":"Value"}}]'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Body

Key Value
objects [{"Parameters":{"Variable":"Value"}}]
Parameter Description
data variables are the different fields of the object This parameter is mandatory
id Record ID. If 0, a new record is created. Otherwise, the record is updated only if it already exists.Mandatory in case of an update
link this parameter allows to link the record to another direct object. You must add as a variable the linked object, and as a value, the identifier of the linked record in the linked object. Mandatory for links between objects

It is possible to insert multiple records by framing them within a larger JSON structure in the request body.

Example

[
  {
    "id": 0,
    "link": {
      "contact": "47737"
    },
    "data": {
      "DATE_DESINSCRIPTION": "2020-12-19 12:50:50",
      "DESINSCRIPTION_ADRESSE": "exemple@example.com"
    }
  },
  {
    "id": 21245,
    "data": {
      "DATE_DESINSCRIPTION": "2020-12-19 12:50:50",
      "DESINSCRIPTION_ADRESSE": "exemple3@example.com"
    }
  }
]

General

Paging

Pagination allows you to control the number of results returned and navigate through pages of data.

GET https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_objects/<OBJECT_NAME>?page=2&pagesize=3

Query parameters

Parameter Required Description
page Yes Page number to retrieve. Must be greater than 0
pagesize Yes Number of items per page

Ordering

Allows you to sort the results by one or multiple fields in either ascending (asc) or descending (desc) order.

GET https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_objects/<OBJECT_NAME>?sort_by={"Prenom":"desc", "Nom":"asc"}

Query parameters

Parameter Description
sort_by JSON object where keys are field names and values are asc or desc.

Filtering

Filter your search by adding conditions in the query.

filter=[field] operator value...operator [field] operator value...

Text values must be enclosed in double quotes.

GET https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_objects/<OBJECT_NAME>?filter=date_last_interaction $gt "2025-01-01 06:00" $and status $eq "client"

Operator Description Example
$and logical AND date_last_interaction $gt "2025-01-01 06:00" $and status $eq "client"
$or logical OR status $eq "client" $or status $eq "prospect"
* wildcard used with like email $like "*.fr"
$like allows you to search similar expression email $like "*scal-e*"
$notlike allows you to search non similar expression email $notlike "*span*"
$in allows you to search a value contained in an enumeration [a,b,c] cc_age $in ["16","15"]
$notin allows you to search a value which is not contained in an enumeration [a,b,c] pays $notin ["FR","ES"]
$regexp allows you to use regular expression. Regex format : Mysql email $regexp "^test"
$eq equal cc_age $eq "16"
$gt greater than cc_age $gt "65"
$gte greater than or equal cc_age $gte "25"
$lt lower than cc_age $lt "18"
$lte lower than or equal cc_age $lte "16"
$neq not equal status $neq "" $and status $neq "client"

Fields

Display the desired fields.

Fields must be separated by commas.

GET https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/get_objects/<OBJECT_NAME>?fields=Civilite,Prenom,Nom,email,Telephone

Example

Insert Data into an Unlinked Object

Create an entry.

POST https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>

curl --location --request POST 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>' \
--header 'Authorization: Bearer <API_TOKEN>' \
--form 'objects="[{\"id\":0,\"data\":{\"field_1\":\"John\",\"field_2\":\"O\\'\''Connor\"}}]"'
import requests

url = "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>"

payload = {
    'objects': '[{"id":0,"data":{"field_1":"John","field_2":"O\\\'Connor"}}]'
}

headers = {
  'Authorization': 'Bearer <API_TOKEN>'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
<?php
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => array(
    'objects' => '[{"id":0,"data":{"field_1":"John","field_2":"O\\\'Connor"}}]'
  ),
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer <API_TOKEN>'
  ),
));

$response = curl_exec($curl);
curl_close($curl);
echo $response;
var https = require('follow-redirects').https;

var options = {
  'method': 'POST',
  'hostname': '{BASE_URL}',
  'path': '/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>',
  'headers': {
    'Authorization': 'Bearer <API_TOKEN>'
  },
  'maxRedirects': 20
};

var req = https.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });

  res.on("error", function (error) {
    console.error(error);
  });
});

var postData = '------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n'
+ 'Content-Disposition: form-data; name="objects"\r\n\r\n'
+ '[{"id":0,"data":{"field_1":"John","field_2":"O\\\'Connor"}}]\r\n'
+ '------WebKitFormBoundary7MA4YWxkTrZu0gW--';

req.setHeader('content-type', 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW');

req.write(postData);
req.end();

Body

key value
objects [{"id":0,"data":{"field_1":"John","field_2":"O\'Connor"}}]

Response

{
    "objects": [
        {
            "status": "OK",
            "id": "<ID_ENTRY>",
            "data": {
                "field_1": "John",
                "field_2": "O'Connor"
            },
            "updated": "N",
            "created": "Y",
            "found": "N"
        }
    ]
}

Insert Data into a Linked Object

Insert a record in an object linked to another object.

Example : inserting an order (object_1) linked to a contact (object_2).

POST https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>

curl --location --request POST 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>' \
--header 'Authorization: Bearer <API_TOKEN>' \
--form 'objects="[{\"id\":0,\"link\":{\"object_2\":id_object_2},\"data\":{\"field_1\":\"O\\'Connor\",\"field_2\":\"value_2\"}}]"'

import requests

url = "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>"
payload = {
  'objects': '[{"id":0,"link":{"object_2":id_object_2},"data":{"field_1":"O\'Connor","field_2":"value_2"}}]'
}
files=[]
headers = {
  'Authorization': 'Bearer <API_TOKEN>'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => array('objects' => '[{"id" : 0, "link" : {"object_2" : id_object_2}, "data" : {"field_1" : "O\'Connor", "field_2" : "value_2"}}]'),
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer <API_TOKEN>'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>',
  'headers': {
    'Authorization': 'Bearer <API_TOKEN>'
  },
  formData: {
  'objects': '[{"id":0,"link":{"object_2":id_object_2},"data":{"field_1":"O\'Connor","field_2":"value_2"}}]'
 }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Body

key values
objects [{"id" : 0, "link" : {"object_2" : id_object_2}, "data" : {"field_1" : "O\'Connor", "field_2" : "value_2"}}]

Response

{
    "objects": [
        {
            "status": "OK",
            "id": "<ID_ENTRY>",
            "data": {
                "object_1.field_1": "O\'Connor",
                "object_1.field_2": "value_2"
            },
            "link": {
                "object_2" : "id_object_2"
            },
            "updated": "N",
            "created": "Y",
            "found": "N"
        }
    ]
}

Update data

Update an existing record in an object.

POST https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>

curl --location --request POST 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>' \
--header 'Authorization: Bearer <API_TOKEN>' \
--form 'objects="[{\"id\":<id_object_1>,\"data\":{\"field_1\":\"O\\'Connor\",\"field_2\":\"value_2\"}}]"'

import requests

url = "https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>"

payload={'objects': '[{"id" : <id_object_1>, "data" :{"field_1" : "O\'Connor", "field_2" : "value_2"}}]'}
files=[
]
headers = {
  'Authorization': 'Bearer <API_TOKEN>'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => array('objects' => '[{"id" : <id_object_1>, "data" :{"field_1" : "O\'Connor", "field_2" : "value_2"}}]'),
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer <API_TOKEN>'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
var request = require('request');

var options = {
  method: 'POST',
  url: 'https://{BASE_URL}/v1/datamart/{INSTANCE_ID}/put_objects/<object_1>',
  headers: {
    'Authorization': 'Bearer <API_TOKEN>'
  },
  formData: {
    objects: '[{"id":<id_object_1>,"data":{"field_1":"O\'Connor","field_2":"value_2"}}]'
  }
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Body

key values
objects [{"id" : <id_object_1>, "data" :{"field_1" : "O\'Connor", "field_2" : "value_2"}}]

Response

{
    "objects": [
        {
            "status": "OK",
            "id": "id_object_1",
            "data": {
                "field_1": "O\'Connor",
                "field_2": "value_2"
            },
            "updated": "Y",
            "created": "N",
            "found": "Y"
        }
    ]
}

Status codes

The Scal-e API uses the following error codes

Code Message Meaning
200 OK Your request was processed successfully
201 Created Instance has been created successfully
400 Bad Request Your request is invalid
401 Unauthorized Your API key is wrong
403 Forbidden The requested is for administrators only
404 Not Found The specified request could not be found
405 Method Not Allowed You tried to access a request with an invalid method
406 Not Acceptable You requested a format that isn't json
429 Too Many Requests You're requesting too many Slow down!
500 Internal Server Error We had a problem with our server
503 Service Unavailable We're temporarily offline for maintenance