curl --request PATCH \
--url https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"promptText": "<string>",
"topicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isActive": true,
"expectedActive": true,
"force": false
}
'import requests
url = "https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}"
payload = {
"promptText": "<string>",
"topicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isActive": True,
"expectedActive": True,
"force": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
promptText: '<string>',
topicId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
isActive: true,
expectedActive: true,
force: false
})
};
fetch('https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}', 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://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'promptText' => '<string>',
'topicId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'isActive' => true,
'expectedActive' => true,
'force' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}"
payload := strings.NewReader("{\n \"promptText\": \"<string>\",\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isActive\": true,\n \"expectedActive\": true,\n \"force\": false\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"promptText\": \"<string>\",\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isActive\": true,\n \"expectedActive\": true,\n \"force\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"promptText\": \"<string>\",\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isActive\": true,\n \"expectedActive\": true,\n \"force\": false\n}"
response = http.request(request)
puts response.read_body{
"data": {
"prompt": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"promptText": "<string>",
"topicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isActive": true,
"disabledReason": "manual",
"disabledAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
},
"meta": {
"timestamp": "2023-11-07T05:31:56Z",
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}Update a tracked prompt
Changes a prompt’s text, moves it to another topic in this project, or switches it on or off. Switching it on counts against the prompt allowance and returns 409 with reason prompt_limit_reached when it is full; send isActive true on its own, without promptText or topicId. Pass expectedActive to refuse the change with 409 and reason prompt_changed if the prompt was switched since you read it. A prompt or topic outside this project returns 404. Requires the prompts.write scope.
curl --request PATCH \
--url https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"promptText": "<string>",
"topicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isActive": true,
"expectedActive": true,
"force": false
}
'import requests
url = "https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}"
payload = {
"promptText": "<string>",
"topicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isActive": True,
"expectedActive": True,
"force": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
promptText: '<string>',
topicId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
isActive: true,
expectedActive: true,
force: false
})
};
fetch('https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}', 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://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'promptText' => '<string>',
'topicId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'isActive' => true,
'expectedActive' => true,
'force' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}"
payload := strings.NewReader("{\n \"promptText\": \"<string>\",\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isActive\": true,\n \"expectedActive\": true,\n \"force\": false\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"promptText\": \"<string>\",\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isActive\": true,\n \"expectedActive\": true,\n \"force\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts/{promptId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"promptText\": \"<string>\",\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isActive\": true,\n \"expectedActive\": true,\n \"force\": false\n}"
response = http.request(request)
puts response.read_body{
"data": {
"prompt": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"promptText": "<string>",
"topicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isActive": true,
"disabledReason": "manual",
"disabledAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
},
"meta": {
"timestamp": "2023-11-07T05:31:56Z",
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}Authorizations
API key with dtk_live_ prefix. Obtain it from API Keys in the account sidebar. New keys start with all supported scopes selected for the chosen project, and you can narrow them to specific read/write scopes as needed.
Path Parameters
A prompt id from listPrompts.
Body
The exact question to track.
10 - 1000Move the prompt to this topic.
Switch the prompt on or off.
Refuse the change unless the prompt is still in this on/off state.
Track the prompt even though a highly similar one is already tracked.