curl --request POST \
--url https://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"steps": [
{
"transformationBlockId": 123,
"parameters": {}
}
],
"setMetadataAfterRunning": [
{
"key": "<string>",
"value": "<string>"
}
],
"name": "<string>",
"dataMetadataKey": "<string>",
"dataMetadataValue": "<string>",
"sortOrder": 123
}
'import requests
url = "https://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}"
payload = {
"steps": [
{
"transformationBlockId": 123,
"parameters": {}
}
],
"setMetadataAfterRunning": [
{
"key": "<string>",
"value": "<string>"
}
],
"name": "<string>",
"dataMetadataKey": "<string>",
"dataMetadataValue": "<string>",
"sortOrder": 123
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
steps: [{transformationBlockId: 123, parameters: {}}],
setMetadataAfterRunning: [{key: '<string>', value: '<string>'}],
name: '<string>',
dataMetadataKey: '<string>',
dataMetadataValue: '<string>',
sortOrder: 123
})
};
fetch('https://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}', 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://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}",
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([
'steps' => [
[
'transformationBlockId' => 123,
'parameters' => [
]
]
],
'setMetadataAfterRunning' => [
[
'key' => '<string>',
'value' => '<string>'
]
],
'name' => '<string>',
'dataMetadataKey' => '<string>',
'dataMetadataValue' => '<string>',
'sortOrder' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}"
payload := strings.NewReader("{\n \"steps\": [\n {\n \"transformationBlockId\": 123,\n \"parameters\": {}\n }\n ],\n \"setMetadataAfterRunning\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"dataMetadataKey\": \"<string>\",\n \"dataMetadataValue\": \"<string>\",\n \"sortOrder\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"steps\": [\n {\n \"transformationBlockId\": 123,\n \"parameters\": {}\n }\n ],\n \"setMetadataAfterRunning\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"dataMetadataKey\": \"<string>\",\n \"dataMetadataValue\": \"<string>\",\n \"sortOrder\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"steps\": [\n {\n \"transformationBlockId\": 123,\n \"parameters\": {}\n }\n ],\n \"setMetadataAfterRunning\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"dataMetadataKey\": \"<string>\",\n \"dataMetadataValue\": \"<string>\",\n \"sortOrder\": 123\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"error": "<string>"
}Save AI Actions config
Store an AI Actions config. Use createAIActionsJob to run the job. Post the full AI Action here w/ all parameters.
curl --request POST \
--url https://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"steps": [
{
"transformationBlockId": 123,
"parameters": {}
}
],
"setMetadataAfterRunning": [
{
"key": "<string>",
"value": "<string>"
}
],
"name": "<string>",
"dataMetadataKey": "<string>",
"dataMetadataValue": "<string>",
"sortOrder": 123
}
'import requests
url = "https://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}"
payload = {
"steps": [
{
"transformationBlockId": 123,
"parameters": {}
}
],
"setMetadataAfterRunning": [
{
"key": "<string>",
"value": "<string>"
}
],
"name": "<string>",
"dataMetadataKey": "<string>",
"dataMetadataValue": "<string>",
"sortOrder": 123
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
steps: [{transformationBlockId: 123, parameters: {}}],
setMetadataAfterRunning: [{key: '<string>', value: '<string>'}],
name: '<string>',
dataMetadataKey: '<string>',
dataMetadataValue: '<string>',
sortOrder: 123
})
};
fetch('https://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}', 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://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}",
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([
'steps' => [
[
'transformationBlockId' => 123,
'parameters' => [
]
]
],
'setMetadataAfterRunning' => [
[
'key' => '<string>',
'value' => '<string>'
]
],
'name' => '<string>',
'dataMetadataKey' => '<string>',
'dataMetadataValue' => '<string>',
'sortOrder' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}"
payload := strings.NewReader("{\n \"steps\": [\n {\n \"transformationBlockId\": 123,\n \"parameters\": {}\n }\n ],\n \"setMetadataAfterRunning\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"dataMetadataKey\": \"<string>\",\n \"dataMetadataValue\": \"<string>\",\n \"sortOrder\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"steps\": [\n {\n \"transformationBlockId\": 123,\n \"parameters\": {}\n }\n ],\n \"setMetadataAfterRunning\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"dataMetadataKey\": \"<string>\",\n \"dataMetadataValue\": \"<string>\",\n \"sortOrder\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://studio.edgeimpulse.com/v1/api/{projectId}/ai-actions/{actionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"steps\": [\n {\n \"transformationBlockId\": 123,\n \"parameters\": {}\n }\n ],\n \"setMetadataAfterRunning\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"dataMetadataKey\": \"<string>\",\n \"dataMetadataValue\": \"<string>\",\n \"sortOrder\": 123\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"error": "<string>"
}Authorizations
Body
Show child attributes
Show child attributes
Type of data to run this AI action on.
allData, unlabeledData, enabledData, dataWithoutMetadataKey, dataWithMetadata After the action runs, add this key/value pair as metadata on the affected samples.
Show child attributes
Show child attributes
User-provided name. If no name is set then displayName on the action will be automatically configured based on the transformation block.
Metadata key to filter on. Required if dataCategory is equal to "dataWithoutMetadataKey" or "dataWithMetadata".
Metadata value to filter on. Required if dataCategory is equal to "dataWithMetadata".
Numeric value (1..n) where this action should be shown in the action list (and in which order the actions should run when started from a data source).
Was this page helpful?