Resolve Check
curl --request POST \
--url https://api.velt.dev/v2/agents/checks/resolve \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"organizationId": "<string>",
"documentId": "<string>",
"ruleKey": "<string>",
"by": "<string>",
"userId": "<string>",
"userName": "<string>",
"userEmail": "<string>"
}
}
'import requests
url = "https://api.velt.dev/v2/agents/checks/resolve"
payload = { "data": {
"organizationId": "<string>",
"documentId": "<string>",
"ruleKey": "<string>",
"by": "<string>",
"userId": "<string>",
"userName": "<string>",
"userEmail": "<string>"
} }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
organizationId: '<string>',
documentId: '<string>',
ruleKey: '<string>',
by: '<string>',
userId: '<string>',
userName: '<string>',
userEmail: '<string>'
}
})
};
fetch('https://api.velt.dev/v2/agents/checks/resolve', 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.velt.dev/v2/agents/checks/resolve",
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([
'data' => [
'organizationId' => '<string>',
'documentId' => '<string>',
'ruleKey' => '<string>',
'by' => '<string>',
'userId' => '<string>',
'userName' => '<string>',
'userEmail' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$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.velt.dev/v2/agents/checks/resolve"
payload := strings.NewReader("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"ruleKey\": \"<string>\",\n \"by\": \"<string>\",\n \"userId\": \"<string>\",\n \"userName\": \"<string>\",\n \"userEmail\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-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://api.velt.dev/v2/agents/checks/resolve")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"ruleKey\": \"<string>\",\n \"by\": \"<string>\",\n \"userId\": \"<string>\",\n \"userName\": \"<string>\",\n \"userEmail\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/agents/checks/resolve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"ruleKey\": \"<string>\",\n \"by\": \"<string>\",\n \"userId\": \"<string>\",\n \"userName\": \"<string>\",\n \"userEmail\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "Check resolved",
"data": {
"resolved": 0,
"alreadyPending": 0,
"rescanExecutionIds": [],
"truncated": false
}
}
}
Checks
Resolve Check
POST
/
v2
/
agents
/
checks
/
resolve
Resolve Check
curl --request POST \
--url https://api.velt.dev/v2/agents/checks/resolve \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"organizationId": "<string>",
"documentId": "<string>",
"ruleKey": "<string>",
"by": "<string>",
"userId": "<string>",
"userName": "<string>",
"userEmail": "<string>"
}
}
'import requests
url = "https://api.velt.dev/v2/agents/checks/resolve"
payload = { "data": {
"organizationId": "<string>",
"documentId": "<string>",
"ruleKey": "<string>",
"by": "<string>",
"userId": "<string>",
"userName": "<string>",
"userEmail": "<string>"
} }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
organizationId: '<string>',
documentId: '<string>',
ruleKey: '<string>',
by: '<string>',
userId: '<string>',
userName: '<string>',
userEmail: '<string>'
}
})
};
fetch('https://api.velt.dev/v2/agents/checks/resolve', 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.velt.dev/v2/agents/checks/resolve",
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([
'data' => [
'organizationId' => '<string>',
'documentId' => '<string>',
'ruleKey' => '<string>',
'by' => '<string>',
'userId' => '<string>',
'userName' => '<string>',
'userEmail' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$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.velt.dev/v2/agents/checks/resolve"
payload := strings.NewReader("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"ruleKey\": \"<string>\",\n \"by\": \"<string>\",\n \"userId\": \"<string>\",\n \"userName\": \"<string>\",\n \"userEmail\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-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://api.velt.dev/v2/agents/checks/resolve")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"ruleKey\": \"<string>\",\n \"by\": \"<string>\",\n \"userId\": \"<string>\",\n \"userName\": \"<string>\",\n \"userEmail\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/agents/checks/resolve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"ruleKey\": \"<string>\",\n \"by\": \"<string>\",\n \"userId\": \"<string>\",\n \"userName\": \"<string>\",\n \"userEmail\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "Check resolved",
"data": {
"resolved": 0,
"alreadyPending": 0,
"rescanExecutionIds": [],
"truncated": false
}
}
}
Use this API to resolve every open agent comment of one check in one call, for a person (
The schema uses
Errors:
by: "user") or an MCP client (by: "mcp"). Each comment is resolved as Resolve Comment does: Resolved, and waiting for the scan that verifies it. All of them share one verify window, so each of the check’s agents rescans once.
The resolve starts a verify rescan, which uses AI credits at the flat rescan rate. It is idempotent: a comment that already waits for its rescan is counted in alreadyPending, not resolved again, and not charged again.
At most 5,000 open comments are resolved in one call. Attached comments are not included. See Checks Overview.
Endpoint
POST https://api.velt.dev/v2/agents/checks/resolve
Headers
string
required
Your API key.
string
required
Your Auth Token.
Body
Params
object
required
Show properties
Show properties
string
required
1 to 512 characters. The organization of the project.
string
required
1 to 512 characters. The document of the project.
string
required
The check.
[a-z0-9:-], at most 120 characters.string
required
Who resolves:
"user" (a person) or "mcp" (an MCP client). Any other value is rejected.string
required
1 to 512 characters. Recorded as the person who resolved the comments.
string
At most 512 characters. The person’s name, for the verify rescans.
string
At most 512 characters. The person’s email, for the verify rescans.
.strict(): unknown fields are rejected.
Example Requests
{
"data": {
"organizationId": "org_acme",
"documentId": "acme-marketing-site",
"ruleKey": "link-broken",
"by": "mcp",
"userId": "user_jordan"
}
}
Response
Success Response
{
"result": {
"status": "success",
"message": "Check resolved",
"data": {
"resolved": 3,
"alreadyPending": 1,
"rescanExecutionIds": ["exec_4Wq7Zx2Np8"],
"truncated": false
}
}
}
| Field | Type | Description |
|---|---|---|
data.resolved | number | Comments this call resolved. |
data.alreadyPending | number | Comments that already waited for their verify rescan: nothing new started, nothing charged. |
data.rescanExecutionIds | string[] | The verify runs of the comments that already waited, when they have started. The comments resolved now are queued and have no run id yet. |
data.truncated | boolean | true when the check had more than 5,000 open comments. The rest stay open: call again. |
Failure Response
{
"error": {
"message": "Workspace not found or has no store database for the checks engine",
"status": "NOT_FOUND",
"details": {
"reason": "CHECKS_WORKSPACE_NOT_FOUND"
}
}
}
INVALID_ARGUMENT (a body outside the schema: a missing or malformed ruleKey, a missing userId, a by other than "user" or "mcp", or an unknown field) / NOT_FOUND with CHECKS_WORKSPACE_NOT_FOUND (the workspace has no store database).
{
"result": {
"status": "success",
"message": "Check resolved",
"data": {
"resolved": 0,
"alreadyPending": 0,
"rescanExecutionIds": [],
"truncated": false
}
}
}
Was this page helpful?

