curl --request POST \
--url https://api.enterspeed.com/ingest/v2/{originId} \
--header 'Content-Length: <content-length>' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <x-api-key>' \
--header 'X-Enterspeed-Type: <x-enterspeed-type>' \
--data '
{
"name": "Official Enterspeed T-shirt",
"price": 199.99,
"inStock": true,
"features": [
{
"name": "color",
"value": "blue"
},
{
"name": "size",
"value": "M"
}
],
"information": {
"short": "Nice t-shirt",
"long": "Nice t-shirt in cotton."
}
}
'import requests
url = "https://api.enterspeed.com/ingest/v2/{originId}"
payload = {
"name": "Official Enterspeed T-shirt",
"price": 199.99,
"inStock": True,
"features": [
{
"name": "color",
"value": "blue"
},
{
"name": "size",
"value": "M"
}
],
"information": {
"short": "Nice t-shirt",
"long": "Nice t-shirt in cotton."
}
}
headers = {
"X-Api-Key": "<x-api-key>",
"X-Enterspeed-Type": "<x-enterspeed-type>",
"Content-Length": "<content-length>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Api-Key': '<x-api-key>',
'X-Enterspeed-Type': '<x-enterspeed-type>',
'Content-Length': '<content-length>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Official Enterspeed T-shirt',
price: 199.99,
inStock: true,
features: [{name: 'color', value: 'blue'}, {name: 'size', value: 'M'}],
information: {short: 'Nice t-shirt', long: 'Nice t-shirt in cotton.'}
})
};
fetch('https://api.enterspeed.com/ingest/v2/{originId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.enterspeed.com/ingest/v2/{originId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Official Enterspeed T-shirt',
'price' => 199.99,
'inStock' => true,
'features' => [
[
'name' => 'color',
'value' => 'blue'
],
[
'name' => 'size',
'value' => 'M'
]
],
'information' => [
'short' => 'Nice t-shirt',
'long' => 'Nice t-shirt in cotton.'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Length: <content-length>",
"Content-Type: application/json",
"X-Api-Key: <x-api-key>",
"X-Enterspeed-Type: <x-enterspeed-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.enterspeed.com/ingest/v2/{originId}"
payload := strings.NewReader("{\n \"name\": \"Official Enterspeed T-shirt\",\n \"price\": 199.99,\n \"inStock\": true,\n \"features\": [\n {\n \"name\": \"color\",\n \"value\": \"blue\"\n },\n {\n \"name\": \"size\",\n \"value\": \"M\"\n }\n ],\n \"information\": {\n \"short\": \"Nice t-shirt\",\n \"long\": \"Nice t-shirt in cotton.\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<x-api-key>")
req.Header.Add("X-Enterspeed-Type", "<x-enterspeed-type>")
req.Header.Add("Content-Length", "<content-length>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.enterspeed.com/ingest/v2/{originId}")
.header("X-Api-Key", "<x-api-key>")
.header("X-Enterspeed-Type", "<x-enterspeed-type>")
.header("Content-Length", "<content-length>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Official Enterspeed T-shirt\",\n \"price\": 199.99,\n \"inStock\": true,\n \"features\": [\n {\n \"name\": \"color\",\n \"value\": \"blue\"\n },\n {\n \"name\": \"size\",\n \"value\": \"M\"\n }\n ],\n \"information\": {\n \"short\": \"Nice t-shirt\",\n \"long\": \"Nice t-shirt in cotton.\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.enterspeed.com/ingest/v2/{originId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<x-api-key>'
request["X-Enterspeed-Type"] = '<x-enterspeed-type>'
request["Content-Length"] = '<content-length>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Official Enterspeed T-shirt\",\n \"price\": 199.99,\n \"inStock\": true,\n \"features\": [\n {\n \"name\": \"color\",\n \"value\": \"blue\"\n },\n {\n \"name\": \"size\",\n \"value\": \"M\"\n }\n ],\n \"information\": {\n \"short\": \"Nice t-shirt\",\n \"long\": \"Nice t-shirt in cotton.\"\n }\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Processing has been initiated."
}{
"status": 413,
"message": "Source entity size exceeds 5,242,880B. Actual size 10,485,760B",
"errorCode": "s-1007"
}{
"status": 422,
"message": "Invalid request",
"errorCode": "s-1001",
"errors": {
"type": "Type cannot be changed from 'product' to 'productVariant'. Use the X-Enterspeed-Force-Type header to override, or delete the source entity first."
}
}"Internal server error"Starting the process for saving the entity.
This endpoint can be used in two ways:
- Raw: The body contains the raw source entity and the required meta data is provided as header parameters.
- Simplified: The source entity is given
propertiesof the body which also includes meta data.
curl --request POST \
--url https://api.enterspeed.com/ingest/v2/{originId} \
--header 'Content-Length: <content-length>' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <x-api-key>' \
--header 'X-Enterspeed-Type: <x-enterspeed-type>' \
--data '
{
"name": "Official Enterspeed T-shirt",
"price": 199.99,
"inStock": true,
"features": [
{
"name": "color",
"value": "blue"
},
{
"name": "size",
"value": "M"
}
],
"information": {
"short": "Nice t-shirt",
"long": "Nice t-shirt in cotton."
}
}
'import requests
url = "https://api.enterspeed.com/ingest/v2/{originId}"
payload = {
"name": "Official Enterspeed T-shirt",
"price": 199.99,
"inStock": True,
"features": [
{
"name": "color",
"value": "blue"
},
{
"name": "size",
"value": "M"
}
],
"information": {
"short": "Nice t-shirt",
"long": "Nice t-shirt in cotton."
}
}
headers = {
"X-Api-Key": "<x-api-key>",
"X-Enterspeed-Type": "<x-enterspeed-type>",
"Content-Length": "<content-length>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Api-Key': '<x-api-key>',
'X-Enterspeed-Type': '<x-enterspeed-type>',
'Content-Length': '<content-length>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Official Enterspeed T-shirt',
price: 199.99,
inStock: true,
features: [{name: 'color', value: 'blue'}, {name: 'size', value: 'M'}],
information: {short: 'Nice t-shirt', long: 'Nice t-shirt in cotton.'}
})
};
fetch('https://api.enterspeed.com/ingest/v2/{originId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.enterspeed.com/ingest/v2/{originId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Official Enterspeed T-shirt',
'price' => 199.99,
'inStock' => true,
'features' => [
[
'name' => 'color',
'value' => 'blue'
],
[
'name' => 'size',
'value' => 'M'
]
],
'information' => [
'short' => 'Nice t-shirt',
'long' => 'Nice t-shirt in cotton.'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Length: <content-length>",
"Content-Type: application/json",
"X-Api-Key: <x-api-key>",
"X-Enterspeed-Type: <x-enterspeed-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.enterspeed.com/ingest/v2/{originId}"
payload := strings.NewReader("{\n \"name\": \"Official Enterspeed T-shirt\",\n \"price\": 199.99,\n \"inStock\": true,\n \"features\": [\n {\n \"name\": \"color\",\n \"value\": \"blue\"\n },\n {\n \"name\": \"size\",\n \"value\": \"M\"\n }\n ],\n \"information\": {\n \"short\": \"Nice t-shirt\",\n \"long\": \"Nice t-shirt in cotton.\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<x-api-key>")
req.Header.Add("X-Enterspeed-Type", "<x-enterspeed-type>")
req.Header.Add("Content-Length", "<content-length>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.enterspeed.com/ingest/v2/{originId}")
.header("X-Api-Key", "<x-api-key>")
.header("X-Enterspeed-Type", "<x-enterspeed-type>")
.header("Content-Length", "<content-length>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Official Enterspeed T-shirt\",\n \"price\": 199.99,\n \"inStock\": true,\n \"features\": [\n {\n \"name\": \"color\",\n \"value\": \"blue\"\n },\n {\n \"name\": \"size\",\n \"value\": \"M\"\n }\n ],\n \"information\": {\n \"short\": \"Nice t-shirt\",\n \"long\": \"Nice t-shirt in cotton.\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.enterspeed.com/ingest/v2/{originId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<x-api-key>'
request["X-Enterspeed-Type"] = '<x-enterspeed-type>'
request["Content-Length"] = '<content-length>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Official Enterspeed T-shirt\",\n \"price\": 199.99,\n \"inStock\": true,\n \"features\": [\n {\n \"name\": \"color\",\n \"value\": \"blue\"\n },\n {\n \"name\": \"size\",\n \"value\": \"M\"\n }\n ],\n \"information\": {\n \"short\": \"Nice t-shirt\",\n \"long\": \"Nice t-shirt in cotton.\"\n }\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Processing has been initiated."
}{
"status": 413,
"message": "Source entity size exceeds 5,242,880B. Actual size 10,485,760B",
"errorCode": "s-1007"
}{
"status": 422,
"message": "Invalid request",
"errorCode": "s-1001",
"errors": {
"type": "Type cannot be changed from 'product' to 'productVariant'. Use the X-Enterspeed-Force-Type header to override, or delete the source entity first."
}
}"Internal server error"Headers
Api key to validate your source.
"source-90880177-e9a1-47b3-9a40-7b728a6bafd8"
The type or alias of the type of entity being send to process. Eg. blogList, blogPage, frontPage, etc. Only used for raw body
The type is immutable after initial ingest. If an entity with the same originId already exists and the type differs, the ingest will be rejected with a type change error in the response. Type comparison is case-sensitive. To change the entity type, delete the entity and re-ingest with the new type, or use X-Enterspeed-Force-Type to override.
"product"
Optional header to override type immutability validation. Include this header to bypass the type immutability check and allow re-ingesting an entity with a different type. This is a destructive operation that rebuilds affected views. Use only when intentional type changes are required.
The value needs to be one of true, TRUE, 1.
"true"
If the entity is routable send the URL. Skip if entity is not routable. Only used for raw body. Note: The URL needs to begin with a leading slash.
"/product-1"
Allowed as null if no hierarchy exists. Only used for raw body
"2"
Comma separated list of URLs that redirects to the current page. Eg. https://enterspeed.com/product-1-old/ redirecting to https://enterspeed.com/product-1/.
"/product-old,/product-very-old"
The length of the message body, in bytes (this header is automatically added by most clients).
Note: The endpoint does not support Transfer-Encoding: chunked. JsonContent and PostAsJsonAsync in .NET will by default set the Transfer-Encoding: chunked header. Use types like e.g. StringContent or ByteArrayContent instead.
Path Parameters
Id of the entity. Must be same format for all entities within the same source. Eg. integers, guids, etc.
"1"
Body
The entity to process
- Option 1
- Option 2
Headers required
Property names:
- cannot start with a digit
- cannot consist only of underscores
- can contain A-Z, a-z letters, digits and underscores
Was this page helpful?