Grade a run of this task and propose a more efficient prompt.
curl --request POST \
--url https://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"companyId": "<string>",
"executionId": "<string>",
"notes": "<string>"
}
'import requests
url = "https://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate"
payload = {
"companyId": "<string>",
"executionId": "<string>",
"notes": "<string>"
}
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({companyId: '<string>', executionId: '<string>', notes: '<string>'})
};
fetch('https://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate', 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.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate",
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([
'companyId' => '<string>',
'executionId' => '<string>',
'notes' => '<string>'
]),
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://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate"
payload := strings.NewReader("{\n \"companyId\": \"<string>\",\n \"executionId\": \"<string>\",\n \"notes\": \"<string>\"\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://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companyId\": \"<string>\",\n \"executionId\": \"<string>\",\n \"notes\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate")
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 \"companyId\": \"<string>\",\n \"executionId\": \"<string>\",\n \"notes\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"scheduledTaskId": "<string>",
"status": "<string>",
"executionId": "<string>",
"score": 123,
"scoreReason": "<string>",
"suggestedPrompt": "<string>",
"suggestionReason": "<string>",
"notes": "<string>",
"errorMessage": "<string>",
"createdDate": "<string>",
"updatedDate": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Scheduled Tasks
Grade a run of this task and propose a more efficient prompt.
By default this triggers a fresh run. Pass executionId to evaluate a run
that already happened instead - these tasks take real actions, so re-running
just to get a score is often not what the user wants.
Pass notes to steer the rewrite ("stop it posting twice", "keep the tone").
The run shows what happened, not which parts the owner considers wrong.
A real run can take minutes, so this returns 202 immediately and the client
polls GET /scheduled-tasks/<task_id>/evaluate for the result.
POST
/
api
/
v0
/
scheduled-tasks
/
{task_id}
/
evaluate
Grade a run of this task and propose a more efficient prompt.
curl --request POST \
--url https://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"companyId": "<string>",
"executionId": "<string>",
"notes": "<string>"
}
'import requests
url = "https://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate"
payload = {
"companyId": "<string>",
"executionId": "<string>",
"notes": "<string>"
}
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({companyId: '<string>', executionId: '<string>', notes: '<string>'})
};
fetch('https://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate', 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.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate",
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([
'companyId' => '<string>',
'executionId' => '<string>',
'notes' => '<string>'
]),
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://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate"
payload := strings.NewReader("{\n \"companyId\": \"<string>\",\n \"executionId\": \"<string>\",\n \"notes\": \"<string>\"\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://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companyId\": \"<string>\",\n \"executionId\": \"<string>\",\n \"notes\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/scheduled-tasks/{task_id}/evaluate")
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 \"companyId\": \"<string>\",\n \"executionId\": \"<string>\",\n \"notes\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"scheduledTaskId": "<string>",
"status": "<string>",
"executionId": "<string>",
"score": 123,
"scoreReason": "<string>",
"suggestedPrompt": "<string>",
"suggestionReason": "<string>",
"notes": "<string>",
"errorMessage": "<string>",
"createdDate": "<string>",
"updatedDate": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
CompanyApiKeyBearerAuth & CompanyId
Company API key - scoped to a specific company. Generate from the Integrations page in your dashboard.
Path Parameters
Body
application/json
What to evaluate and how to steer the rewrite
Response
Evaluation started; poll the GET endpoint
A run of the task graded 0-100, plus a proposed more efficient prompt

