Create a tracked prompt
curl --request POST \
--url https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"topicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"promptText": "<string>",
"force": false
}
'import requests
url = "https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts"
payload = {
"topicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"promptText": "<string>",
"force": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
topicId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
promptText: '<string>',
force: false
})
};
fetch('https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts', 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",
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([
'topicId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'promptText' => '<string>',
'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"
payload := strings.NewReader("{\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"promptText\": \"<string>\",\n \"force\": false\n}")
req, _ := http.NewRequest("POST", 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.post("https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"promptText\": \"<string>\",\n \"force\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"promptText\": \"<string>\",\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": {}
}Endpoints
Create a tracked prompt
Tracks a new prompt in a topic of this project, switched on. It counts against the prompt allowance: over the allowance the request returns 409 with reason prompt_limit_reached and the allowance in the message. Text already tracked returns 409; a highly similar prompt returns 409 with reason similar_prompt unless force is true. The prompt is classified and its search volume estimated in the background. Requires the prompts.write scope.
POST
/
projects
/
{projectId}
/
visibility
/
prompts
Create a tracked prompt
curl --request POST \
--url https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"topicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"promptText": "<string>",
"force": false
}
'import requests
url = "https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts"
payload = {
"topicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"promptText": "<string>",
"force": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
topicId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
promptText: '<string>',
force: false
})
};
fetch('https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts', 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",
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([
'topicId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'promptText' => '<string>',
'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"
payload := strings.NewReader("{\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"promptText\": \"<string>\",\n \"force\": false\n}")
req, _ := http.NewRequest("POST", 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.post("https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"promptText\": \"<string>\",\n \"force\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://devtune.ai/api/v2/projects/{projectId}/visibility/prompts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"topicId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"promptText\": \"<string>\",\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
Body
application/json