Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Documentation for Heartcore Content Management APIs
This is the management API for creating, updating and deleting content, media, languages, relations, members and member groups. It also allows you to retrieve content drafts as well as Content Types, Media Types and Member Types.
Common for the Content Management API is that you must be authenticated and authorized when performing any action against the endpoints listed below. This means that you must supply a Bearer Token via an Authorization header or an API Key via an Authorization or Api-Key header.
Content endpoints for retrieving, creating, updating and deleting.
Content Type endpoints for retrieving all available and specific content types. We also expose endpoints for publishing and unpublishing content.
Media endpoints for retrieving, creating, updating and deleting.
Media Type endpoints for retrieving all available and specific media types.
Language endpoints for retrieving, creating, updating and deleting.
Member endpoints for retrieving, creating, updating and deleting. We also expose endpoints for adding a member to member group and removing a member group from a member.
Member Group endpoints for retrieving, creating and deleting.
Member Type endpoints for retrieving all available and specific member types.
Relation endpoints for retrieving, creating and deleting.
Relation Type endpoints for retrieving specific relation types.
Umbraco Forms endpoints for retrieving and submitting forms.
BASE URL: https://api.umbraco.io
Authentication is required for this API. You must supply a Bearer Token via an Authorization header or an API Key via an Authorization or Api-Key header.
If an error occours you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
Gets all languages available for content creation.
URL: /language
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Get a specific langauge by its ISO code.
URL: /language/{id}
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Create a new language for use on content.
The number of languages that can be created is determined by the pricing tier.
URL: /language
Method: POST
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 201
Content Example:
Updates an existing language.
URL: /language/{id}
Method: PUT
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Deletes an existing language.
Deleting a language that is in use will result in setting the content based on this language to invariant
.
URL: /language/{id}
Method: DELETE
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
DELETE https://api.umbraco.io/language/da-DK
Status Code | Error Code | Message |
---|---|---|
400
BadRequest
Body cannot be empty.
401
Unauthorized
Authorization has been denied for this request.
403
Forbidden
You are not authorized to access the given resource.
404
NotFound
Language with id '{id}' could not be found.
409
LanguageForCultureAlreadyExist
The language '{isoCode}' already exists.
422
ValidationFailed
Validation error occured when trying to save or update the language.
500
InternalServerError
Internal server error.
BASE URL: https://api.umbraco.io
API version: 2.1
The availability of Umbraco Forms depend on the plan. See the Pricing & Features for an overview of which plans includes Forms.
Auth is required for this API meaning that you must supply a Bearer Token via an Authorization header or an API Key via an Authorization or Api-Key header.
If an error occurs you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
The field types gets mapped to a more machine friendly name
Gets all forms.
URL: /forms
Method: GET
Permissions required : Access to Forms section of the Umbraco Backoffice
Code: 200
Content Example:
Get a specific form by its ID.
URL: /forms/{id}
Method: GET
Permissions required : Access to Forms section of the Umbraco Backoffice
Code: 200
Content Example:
Submit form entries for a specific Form - this is what you would use when a form is submitted from your presentation layer.
URL: /forms/{id}/entries
Method: POST
Permissions required : Access to Forms section of the Umbraco Backoffice
The JSON property names are the form field alias
Code: 202
BASE URL: https://api.umbraco.io
Auth is required for this API meaning that you must supply a Bearer Token via an Authorization header or an API Key via an Authorization or Api-Key header.
If an error occours you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
Get a list of all available Media Types.
URL: /media/type
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Get a specific Media Type by its alias.
URL: /media/type/{alias}
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
BASE URL: https://api.umbraco.io
Authentication is required for this API. You must supply a Bearer Token via an Authorization header or an API Key through an Authorization or Api-Key header.
If an error occours you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
Get a specific member by their username.
URL: /member/{username}
Method: GET
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
Content Example:
Create a new member.
To set a password when creating a member a password
field must be included in the posted data. If the password field is omitted no password will be set.
URL: /member/
Method: POST
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 201
Content Example:
Update an existing member.
A member can be unlocked by setting isLockedOut
to false
in the request. Note that a member cannot be locked by setting the value to true
; it will be ignored if the user is not already locked out.
URL: /member/{username}
Method: PUT
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
Content Example:
Delete an existing member by their username.
URL: /member/{username}
Method: DELETE
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
Content Example:
Change a members password.
URL: /member/{username}/password
Method: POST
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
Content Example:
Get a reset password token.
URL: /member/{username}/password/reset-token
Method: GET
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
Content Example:
Reset a members password.
URL: /member/{username}/password/reset
Method: POST
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
Content Example:
Add an existing member to an existing member group.
URL: /member/{username}/groups/{groupName}
Method: PUT
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
Remove a specific member from a specific member group.
URL: /member/{username}/groups/{groupName}
Method: DELETE
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
BASE URL: https://api.umbraco.io
Authentication is required for this API. You must supply a Bearer Token via an Authorization header or an API Key through an Authorization or Api-Key header.
If an error occours you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
Get a list of all available Content Types.
URL: /content/type
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Get a specific Content Type by its alias.
URL: /content/type/{alias}
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
BASE URL: https://api.umbraco.io
Auth is required for this API meaning that you must supply a Bearer Token via an Authorization header or an API Key via an Authorization or Api-Key header.
If an error occours you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
Get all media at the root of the tree, which the authorized user has access to according to the 'Start node'-permissions.
URL: /media
Method: GET
Permissions required : Access to Media section of the Umbraco Backoffice
Code: 200
Content Example:
Get specific media item by its GUID ID.
URL: /media/{id}
Method: GET
Permissions required : Access to Media section of the Umbraco Backoffice
Code: 200
Content Example:
Get a list of children (media items) by their parent GUID ID.
URL: /media/{id}/children
Method: GET
Query Strings
Permissions required : Access to Media section of the Umbraco Backoffice
Code: 200
Content Example:
Create a new media item and optionally upload a file to the created item.
Media can be created by sending a POST request to the media endpoint. The request body should contain the media item properties and the file to upload. The file is sent as a multi-part request. The first MultipartBoundary
contains the JSON body describing the content for the image. The second MultipartBoundary
contains the file. If the media item does not contain a file you can send a regular JSON request to create the media.
The umbracoFile.src
property in the first MultipartBoundary
's JSON body defines the name of the file to be uploaded. The fileName
in the second MultipartBoundary
must match the umbracoFile.src
property's value.
Different media property editors will require different request body formats.The File Upload property editor has the file name as the value "umbracoFile": FILE_NAME
, and the Image Cropper property editor expects a JSON value "umbracoFile": { "src": FILE_NAME }
. To verify the JSON structure you can manually upload the media file via the backoffice and fetch the data. It can then be used for reference. (See how in the Creating Content with Media tutorial.)
URL: /media
Method: POST
Header: Content-Type: multipart/form-data; boundary=MultipartBoundry
Permissions required : Access to Media section of the Umbraco Backoffice
Code: 201
Content Example:
Updates an existing media item and optionally uploads a file to the updated item.
Media would typically contain an upload field (the Image
and File
media types has this by default), which means it is possible to send a file along with the request to update an existing media item. This is done by sending a multi-part request with the JSON body and the file. If the media item does not contain a file you can send a regular JSON request to update the media.
URL: /media/{id}
Method: PUT
Header: Content-Type: multipart/form-data; boundary=MultipartBoundry
Permissions required : Access to Media section of the Umbraco Backoffice
Code: 200
Content Example:
Delete a media item. This will also delete any file that is attached to the media item.
URL: /media/{id}
Method: DELETE
Permissions required : Access to Media section of the Umbraco Backoffice
Code: 200
Content Example:
DELETE https://api.umbraco.io/media/b60a1257-4bef-4d5a-aeb6-4af17b6233b2
BASE URL: https://api.umbraco.io
Authentication is required for this API. This means that you must supply a Bearer Token via an Authorization header. Alternatively, you can supply an API Key via an Authorization or Api-Key header.
In addition to the specific permissions listed under each endpoint, all requests requires:
Access to the Content Section of the Umbraco Backoffice and
That the content being accessed is beneath the users start node configured in Umbraco
If an error occours you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
Get all content at the root of the tree, which the authorized user has access to according to the 'Start node'-permissions.
URL: /content
Method: GET
Permissions required : Browse Node
Code: 200
Content Example:
Get specific content item by GUID ID. Includes all language variations.
URL: /content/{id}
Method: GET
Permissions required : Browse Node
Code: 200
Content Example:
Get a list of children (content items) by parent GUID ID. Includes all language variations per content item.
URL: /content/{id}/children
Method: GET
Query Strings
Permissions required : Browse Node
Code: 200
Content Example:
Create a new content item with one or more language variations.
All newly created content will be DRAFT
by default. If you want to publish it you will need to issue a publish request as well.
URL: /content
Method: POST
Permissions required : Create
In this example only one language exists, so the properties are marked with $invariant
in the create request. If multiple languages exists the culture for each of the languages would be defined for each of the properties - example: "name": { "en-US": "Another one", "da-DK": "Endnu en" }
.
If a property uses a multinode treepicker editor, the value should be a comma-separated list of Umbraco UDI Identifiers. In the example below, the UDI Identifiers are referencing content items. To learn more see the UDI Identifiers documentation.
Code: 201
Content Example:
Create a new content item with one or more language variations and files.
When content contains an upload field it is possible to send a file along with the request to create new content. This is done by sending a multi-part request with the JSON body and the file.
If the content item doesn't include files then you can send a standard reqeust with a JSON payload to create a new content item.
All newly created content will be DRAFT
by default. If you want to publish it you will need to issue a publish request as well.
URL: /content
Method: POST
Header: Content-Type: multipart/form-data; boundary=MultipartBoundry
Permissions required : Create
The request must contain a field named content
that contains the content JSON.
For the files being uploaded the field names must be in the format propertyName.culture
. An example could be when the content has an upload property with the name fileUpload
and the file is being uploaded to the en-US
lanugage. In that case the field name should be fileUpload.en-US
.
The property must also be includud in the content JSON and the value shoud be the filename.
Code: 201
Content Example:
Updates an existing content item that has one or more language variations.
When content contains an upload field it is possible to send a file along with the request to update content. This is done by sending a multi-part request with the json body and the file, see Create content with files for an example. If the content item doesn't include files then you can send a standard reqeust with a JSON payload to update the content item.
URL: /content/{id}
Method: PUT
Permissions required : Update
In this example only one language exists, so the properties are marked with $invariant
. If multiple languages existed the culture for each of the languages would be defined for each of the properties. Ie.: "name": { "en-US": "Another one", "da-DK": "Endnu en" }
.
If a property uses a multinode treepicker editor, the value should be a comma-separated list of Umbraco UDI Identifiers. In the example below, the UDI Identifiers are referencing content items. To learn more see the UDI Identifiers documentation.
Code: 200
Content Example:
Publish specific content item with all language variations or for a specific language.
URL: /content/{id}/publish
Method: PUT
Query Strings
Permissions required : Publish
Code: 200
Content Example:
Unpublish specific content item with all language variations or for a specific language.
URL: /content/{id}/unpublish
Method: PUT
Query Strings
Permissions required : Unpublish
Code: 200
Content Example:
Delete a specific content item with all its language variations.
URL: /content/{id}
Method: DELETE
Permissions required : Delete
Code: 200
Content Example:
DELETE https://api.umbraco.io/content/041067a0-74f5-4d03-92af-40c3c0aa13e7
BASE URL: https://api.umbraco.io
Auth is required for this API meaning that you must supply a Bearer Token via an Authorization header or an API Key via an Authorization or Api-Key header.
If an error occours you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
Get a list of all available member types.
URL: /member/type
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Get a specific member type by its alias.
URL: /member/type/{alias}
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
BASE URL: https://api.umbraco.io
Auth is required for this API meaning that you must supply a Bearer Token via an Authorization header or an API Key via an Authorization or Api-Key header.
If an error occours you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
Get a list of all available relation types.
URL: /relation/type
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Get a specific Relation Type by its alias.
URL: /relation/type/{alias}
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
BASE URL: https://api.umbraco.io
Auth is required for this API meaning that you must supply a Bearer Token via an Authorization header or an API Key via an Authorization or Api-Key header.
If an error occours you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
Get all Member Groups.
URL: /member/group
Method: GET
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
Content Example:
Get a specific Member Group by its name.
URL: /member/group/{name}
Method: GET
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
Content Example:
Create a new Member Group.
URL: /member/group
Method: POST
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 201
Content Example:
Delete an existing Member Group.
URL: /member/group/{name}
Method: DELETE
Permissions required : Access to Member section of the Umbraco Backoffice
Code: 200
Content Example:
DELETE https://api.umbraco.io/member/group/Elite%20Shoppers%20Group
BASE URL: https://api.umbraco.io
Auth is required for this API meaning that you must supply a Bearer Token via an Authorization header or an API Key via an Authorization or Api-Key header.
If an error occours you will receive a HTTP status code along with an API error code and an error message in the response body.
JSON example:
Get a specific relation by its integer
ID.
URL: /relation/{id}
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Get a list of relations by their Relation Type alias.
URL: /relation/{alias}
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Get a list of relations by their parents GUID ID.
URL: /relation/parent/{id}
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Get a list of relations by their childs GUID ID.
URL: /relation/child/{id}
Method: GET
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
Create a new relation.
URL: /relation/
Method: POST
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 201
Content Example:
Delete a relation by its integer
ID.
URL: /relation/{id}
Method: DELETE
Permissions required : Access to Settings section of the Umbraco Backoffice
Code: 200
Content Example:
DELETE https://api.umbraco.io/relation/4
Status Code | Error Code | Message |
---|---|---|
Name | Alias | Value |
---|---|---|
Status Code | Error Code | Message |
---|---|---|
Status Code | Error Code | Message |
---|---|---|
Status Code | Error Code | Message |
---|---|---|
Status Code | Error Code | Message |
---|---|---|
Status Code | Error Code | Message |
---|---|---|
Status Code | Error Code | Message |
---|---|---|
Status Code | Error Code | Message |
---|---|---|
Status Code | Error Code | Message |
---|---|---|
Status Code | Error Code | Message |
---|
400
BadRequest
Body cannot be empty.
401
Unauthorized
Authorization has been denied for this request.
403
Forbidden
You are not authorized to access the given resource.
404
NotFound
Form with id '{id}' could not be found.
422
ValidationFailed
Validation error.
500
InternalServerError
Internal server error.
Checkbox
checkbox
string("on") / boolean
Date
date
date (ISO8601)
Data Consent
dataConsent
string("on") / boolean
Dropdown
dropdown
string
Hidden
hidden
string
Long Answer
textarea
string
Multiple Choice
checkboxList
string
Password
password
string
Recaptcha2
recaptcha2
string(reCaptcha response)
Short Answer
text
string
Single Choice
radio
string
Title And Description
titleAndDescription
readonly
401
Unauthorized
Authorization has been denied for this request.
403
Forbidden
You are not authorized to access the given resource.
404
NotFound
Media Type with alias '{alias}' could not be found.
500
InternalServerError
Internal server error.
400
BadRequest
Body cannot be empty.
400
CouldNotUnlockUser
Could not unlock the user.
401
Unauthorized
Authorization has been denied for this request.
403
Forbidden
You are not authorized to access the given resource.
404
NotFound
Member with username '{username}' could not be found.
422
ValidationFailed
Validation error occured when trying to save or update the member.
500
InternalServerError
Internal server error.
401
Unauthorized
Authorization has been denied for this request.
403
Forbidden
You are not authorized to access the given resource.
404
NotFound
Content Type with alias '{alias}' could not be found.
500
InternalServerError
Internal server error.
400
BadRequest
Body cannot be empty.
401
Unauthorized
Authorization has been denied for this request.
403
Forbidden
You are not authorized to access the given resource.
404
NotFound
Media with id '{id}' could not be found.
422
ValidationFailed
Validation error occured when trying to save or update the media item.
500
InternalServerError
Internal server error.
400
BadRequest
Body cannot be empty.
401
Unauthorized
Authorization has been denied for this request.
403
Forbidden
You are not authorized to access the given resource.
404
NotFound
Content with id '{id}' could not be found.
422
ValidationFailed
Validation error occured when trying to save or update the content item.
500
InternalServerError
Internal server error.
401
Unauthorized
Authorization has been denied for this request.
403
Forbidden
You are not authorized to access the given resource.
404
NotFound
Member Type with alias '{alias}' could not be found.
500
InternalServerError
Internal server error.
401
Unauthorized
Authorization has been denied for this request.
403
Forbidden
You are not authorized to access the given resource.
404
NotFound
Relation Type with alias '{alias}' could not be found.
500
InternalServerError
Internal server error.
400
BadRequest
Body cannot be empty.
401
Unauthorized
Authorization has been denied for this request.
403
Forbidden
You are not authorized to access the given resource.
404
NotFound
Member Group with name '{name}' could not be found.
422
ValidationFailed
Validation error occured when trying to save or update the member group.
500
InternalServerError
Internal server error.
400 | BadRequest | Body cannot be empty. |
401 | Unauthorized | Authorization has been denied for this request. |
403 | Forbidden | You are not authorized to access the given resource. |
404 | NotFound | Relation with id '{id}' could not be found. |
422 | ValidationFailed | Validation error occured when trying to save or update the relation. |
500 | InternalServerError | Internal server error. |