The REST API basics
#Response codes
All the responses you can get when requesting via the REST API
#Client errors
There are several types of errors when requesting via the REST API.
#400 error
Sending malformed data results in a 400 Bad Request
response.
#Example
HTTP/1.1 400 Bad Request
{
"code": 400,
"message": "Invalid json message received"
}
As JSON format is expected in all POST and PATCH requests, you will get this error response when your JSON body is malformed. For example, these are malformed JSON.
A comma is missing.
{
"code": "myproduct"
"family": "myfamily"
}
There are missing quotes for the code
property.
{
code: "myproduct",
"family": "myfamily"
}
Below is the good format. Just perfect. Don't move a single comma. 😉
{
"code": "myproduct",
"family": "myfamily"
}
#401 error
Trying to access to the REST API without authentication results in a 401 Unauthorized
response.
#Example
HTTP/1.1 401 Unauthorized
{
"code": 401,
"message": "Authentication is required"
}
#Classical mistakes
The authorization header with the authentication token is missing.
curl https://demo.akeneo.com/api/rest/v1/categories
Try Bearer
instead of Basic
as a keyword before your authentication token.
curl https://demo.akeneo.com/api/rest/v1/categories \
-H "Authorization: Basic NzFiYTM4ZTEwMjcwZTcyZWIzZTA0NmY3NjE3MTIyMjM1Y2NlMmNlNWEyMTAzY2UzYmY0YWIxYmUzNTkyMDcyNQ"
You are experiencing this kind of error and the examples given here did not help you?
Take a look at the authentication documentation. This might save your day!
#403 error
Trying to perform an action without having the corresponding ACL results in a 403 Forbidden
response.
#Example
HTTP/1.1 403 Forbidden
{
"code": 403,
"message": "Access forbidden. You are not allowed to administrate categories."
}
You are experiencing this kind of error and you do not know how to solve it?
Take a look at the permissions documentation. This might save your day!
#404 error
Trying to access to a non-existing resource results in a 404 Not Found
response.
#Example
HTTP/1.1 404 Not Found
{
"code": 404,
"message": "Category 'master' does not exist."
}
#405 error
Trying to use a method on a route for which it is not implemented results in a 405 Method Not Allowed
response.
#Example
HTTP/1.1 405 Method Not Allowed
{
"code": 405,
"message": "No route found for 'POST /api/rest/v1/products-uuid/f62190e8-8314-4360-8ff8-7dbdb4af6312': Method Not Allowed (Allow: GET, PATCH, DELETE)"
}
#406 error
Trying to give the Accept
header a value different from application/json
when getting data, results in a 406 Not Acceptable
response.
#Example
HTTP/1.1 406 Not Acceptable
{
"code": 406,
"message": "‘xxx’ in ‘Accept‘ header is not valid. Only ‘application/json‘ is allowed."
}
#409 error
When a request could not be processed because of conflict, it results in a 409 Conflict
error.
#Example
HTTP/1.1 409 Conflict
#415 error
Trying to give the Content-type
header a value different from application/json
when posting or patching data, results in a 415 Unsupported Media Type
response.
#Example
HTTP/1.1 415 Unsupported Media Type
{
"code": 415,
"message": "‘xxx’ in ‘Content-type’ header is not valid. Only ‘application/json’ is allowed."
}
Forgetting to give the Content-type
header when posting or patching data, also results in a 415 Unsupported Media Type
response.
#Example
HTTP/1.1 415 Unsupported Media Type
{
"code": 415,
"message":"The ‘Content-type’ header is missing. ‘application/json’ has to specified as value."
}
#422 error
Sending invalid data results in a 422 Unprocessable Entity
response.
#Example
HTTP/1.1 422 Unprocessable Entity
{
"code": 422,
"message": "Validation failed.",
"errors": [
{
"property": "values",
"message": "The tommh value is not in the brand attribute option list.",
"attribute": "brand",
"locale": null,
"scope": null
}
]
}
Sending unrecognized properties as well.
#Example
HTTP/1.1 422 Unprocessable Entity
{
"code": 422,
"message": "Property 'extra_property' does not exist. Check the standard format documentation.",
"_links": {
"documentation": {
"href": "https://docs.akeneo.com/master/reference/standard_format/other_entities.html#category"
}
}
}
Or, sending unknown data.
#Example
HTTP/1.1 422 Unprocessable Entity
{
"code": 422,
"message": "The sunglasses category does not exist in your PIM. Check the expected format on the API documentation.",
"_links": {
"documentation": {
"href": "http://api.akeneo.com/api-reference.html#post_products_uuid"
}
}
}
#429 error
Abusing the API will result in 429 Too Many Requests
response.
A Retry-After header is added to the response indicating the time to wait in seconds before retrying.
#Example
HTTP/1.1 429 Too Many Requests
Retry-After: 15
When the REST API answers that something does not exist
, it could also mean that the related user hasn't the permission to access it.
#Success
There are 3 types of client success when requesting via the REST API.
#200 success
Getting a resource or a collection resources results in a 200 OK
response.
#Example
HTTP/1.1 200 OK
#201 success
Creating a resource results in a 201 Created
response. In the Location
header, you will find the route to access the newly created resource.
#Example
HTTP/1.1 201 Created
Location: https://demo.akeneo.com/api/rest/v1/categories/winter
#204 success
Updating or deleting a resource results in a 204 No Content
response. In the Location
header, you will find the route to access the updated resource.
#Example
HTTP/1.1 204 No Content
Location: https://demo.akeneo.com/api/rest/v1/categories/summer