Search artifacts by SHA or fingerprint
curl --request GET \
--url https://app.kosli.com/api/v2/search/{org}/sha/{search_value} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.kosli.com/api/v2/search/{org}/sha/{search_value}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.kosli.com/api/v2/search/{org}/sha/{search_value}', 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://app.kosli.com/api/v2/search/{org}/sha/{search_value}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <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"
"net/http"
"io"
)
func main() {
url := "https://app.kosli.com/api/v2/search/{org}/sha/{search_value}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.kosli.com/api/v2/search/{org}/sha/{search_value}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.kosli.com/api/v2/search/{org}/sha/{search_value}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"artifacts": [
{
"fingerprint": "1084c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc",
"name": "my-artifact.exe",
"has_provenance": true,
"git_commit": "e0ad84e1a2464a9486e777c1ecde162edff930a9",
"pipeline": "my-flow",
"flow": "my-flow",
"trail": "my-trail",
"template_reference_name": "backend",
"build_url": "https://my.build.service/1234",
"commit_url": "https://my.commit.service/1234",
"compliance_state": "COMPLIANT",
"running_in": [
"staging",
"prod"
],
"exited_from": [
"dev"
],
"html_url": "https://app.kosli.com/my-flow/artifacts/1084c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc",
"api_url": "https://app.kosli.com/api/v2/artifacts/1084c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc",
"history": [
"<unknown>"
],
"git_commit_info": {
"sha1": "<string>",
"message": "<string>",
"author": "<string>",
"branch": "<string>",
"timestamp": 123,
"url": "<string>"
}
}
],
"resolved_to": {
"type": "<string>",
"full_match": "<string>",
"fingerprints": {
"type": "<string>",
"count": 123,
"matches": [
"1084c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc"
]
},
"commits": {
"type": "<string>",
"count": 123,
"matches": [
"e0ad84e1a2464a9486e777c1ecde162edff930a9"
],
"details": [
{
"sha1": "e0ad84e1a2464a9486e777c1ecde162edff930a9",
"author": "<string>",
"author_username": "<string>",
"message": "<string>",
"timestamp": 123,
"parents": [
"<string>"
]
}
]
}
},
"trails": [],
"trails_truncated": false
}{
"message": "Search results are too ambiguous. For example: no matches for the provided value."
}Search artifacts by SHA or fingerprint
Get artifacts that match fingerprint or commit-sha, and trails that match commit-sha.
GET
/
search
/
{org}
/
sha
/
{search_value}
Search artifacts by SHA or fingerprint
curl --request GET \
--url https://app.kosli.com/api/v2/search/{org}/sha/{search_value} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.kosli.com/api/v2/search/{org}/sha/{search_value}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.kosli.com/api/v2/search/{org}/sha/{search_value}', 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://app.kosli.com/api/v2/search/{org}/sha/{search_value}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <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"
"net/http"
"io"
)
func main() {
url := "https://app.kosli.com/api/v2/search/{org}/sha/{search_value}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.kosli.com/api/v2/search/{org}/sha/{search_value}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.kosli.com/api/v2/search/{org}/sha/{search_value}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"artifacts": [
{
"fingerprint": "1084c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc",
"name": "my-artifact.exe",
"has_provenance": true,
"git_commit": "e0ad84e1a2464a9486e777c1ecde162edff930a9",
"pipeline": "my-flow",
"flow": "my-flow",
"trail": "my-trail",
"template_reference_name": "backend",
"build_url": "https://my.build.service/1234",
"commit_url": "https://my.commit.service/1234",
"compliance_state": "COMPLIANT",
"running_in": [
"staging",
"prod"
],
"exited_from": [
"dev"
],
"html_url": "https://app.kosli.com/my-flow/artifacts/1084c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc",
"api_url": "https://app.kosli.com/api/v2/artifacts/1084c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc",
"history": [
"<unknown>"
],
"git_commit_info": {
"sha1": "<string>",
"message": "<string>",
"author": "<string>",
"branch": "<string>",
"timestamp": 123,
"url": "<string>"
}
}
],
"resolved_to": {
"type": "<string>",
"full_match": "<string>",
"fingerprints": {
"type": "<string>",
"count": 123,
"matches": [
"1084c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc"
]
},
"commits": {
"type": "<string>",
"count": 123,
"matches": [
"e0ad84e1a2464a9486e777c1ecde162edff930a9"
],
"details": [
{
"sha1": "e0ad84e1a2464a9486e777c1ecde162edff930a9",
"author": "<string>",
"author_username": "<string>",
"message": "<string>",
"timestamp": 123,
"parents": [
"<string>"
]
}
]
}
},
"trails": [],
"trails_truncated": false
}{
"message": "Search results are too ambiguous. For example: no matches for the provided value."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Response
Artifacts matching the search value.
Artifacts that matched the search value.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Trails whose commit matched the search value, newest first. At most 50 are returned.
Show child attributes
Show child attributes
Whether more trails matched than were returned.
Last modified on October 1, 2026