curl --request POST \
--url https://api.tuteliq.ai/api/v1/agent/check-in \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"device_id": "<string>",
"agent_version": "<string>",
"platform": "<string>",
"policy_id": "<string>",
"passed": true,
"results": [
{
"rule": {},
"passed": true,
"detail": "<string>"
}
],
"attested_at": "<string>",
"org_id": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
device_id: '<string>',
agent_version: '<string>',
platform: '<string>',
policy_id: '<string>',
passed: true,
results: [{rule: {}, passed: true, detail: '<string>'}],
attested_at: '<string>',
org_id: '<string>'
})
};
fetch('https://api.tuteliq.ai/api/v1/agent/check-in', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tuteliq.ai/api/v1/agent/check-in"
payload = {
"device_id": "<string>",
"agent_version": "<string>",
"platform": "<string>",
"policy_id": "<string>",
"passed": True,
"results": [
{
"rule": {},
"passed": True,
"detail": "<string>"
}
],
"attested_at": "<string>",
"org_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"device_id\": \"<string>\",\n \"agent_version\": \"<string>\",\n \"platform\": \"<string>\",\n \"policy_id\": \"<string>\",\n \"passed\": true,\n \"results\": [\n {\n \"rule\": {},\n \"passed\": true,\n \"detail\": \"<string>\"\n }\n ],\n \"attested_at\": \"<string>\",\n \"org_id\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/agent/check-in")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"device_id": "<string>",
"agent_version": "<string>",
"platform": "<string>",
"policy_id": "<string>",
"passed": true,
"results": [
[
"rule": [],
"passed": true,
"detail": "<string>"
]
],
"attested_at": "<string>",
"org_id": "<string>"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.tuteliq.ai/api/v1/agent/check-in")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.tuteliq.ai/api/v1/agent/check-in");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"device_id\": \"<string>\",\n \"agent_version\": \"<string>\",\n \"platform\": \"<string>\",\n \"policy_id\": \"<string>\",\n \"passed\": true,\n \"results\": [\n {\n \"rule\": {},\n \"passed\": true,\n \"detail\": \"<string>\"\n }\n ],\n \"attested_at\": \"<string>\",\n \"org_id\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"recorded": true,
"expires_at": "<string>",
"credits_used": 123
}Report a device attestation (endpoint agent check-in)
The tuteliq-agent CLI evaluates the org’s device-safety policy locally and reports the pass/fail result here. One latest-state record is kept per device (upsert, no history). The org is derived from the authenticated API key — any org_id in the body is ignored. No user content is stored; only device posture (policy rule results, versions, platform).
curl --request POST \
--url https://api.tuteliq.ai/api/v1/agent/check-in \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"device_id": "<string>",
"agent_version": "<string>",
"platform": "<string>",
"policy_id": "<string>",
"passed": true,
"results": [
{
"rule": {},
"passed": true,
"detail": "<string>"
}
],
"attested_at": "<string>",
"org_id": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
device_id: '<string>',
agent_version: '<string>',
platform: '<string>',
policy_id: '<string>',
passed: true,
results: [{rule: {}, passed: true, detail: '<string>'}],
attested_at: '<string>',
org_id: '<string>'
})
};
fetch('https://api.tuteliq.ai/api/v1/agent/check-in', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tuteliq.ai/api/v1/agent/check-in"
payload = {
"device_id": "<string>",
"agent_version": "<string>",
"platform": "<string>",
"policy_id": "<string>",
"passed": True,
"results": [
{
"rule": {},
"passed": True,
"detail": "<string>"
}
],
"attested_at": "<string>",
"org_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"device_id\": \"<string>\",\n \"agent_version\": \"<string>\",\n \"platform\": \"<string>\",\n \"policy_id\": \"<string>\",\n \"passed\": true,\n \"results\": [\n {\n \"rule\": {},\n \"passed\": true,\n \"detail\": \"<string>\"\n }\n ],\n \"attested_at\": \"<string>\",\n \"org_id\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/agent/check-in")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"device_id": "<string>",
"agent_version": "<string>",
"platform": "<string>",
"policy_id": "<string>",
"passed": true,
"results": [
[
"rule": [],
"passed": true,
"detail": "<string>"
]
],
"attested_at": "<string>",
"org_id": "<string>"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.tuteliq.ai/api/v1/agent/check-in")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.tuteliq.ai/api/v1/agent/check-in");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"device_id\": \"<string>\",\n \"agent_version\": \"<string>\",\n \"platform\": \"<string>\",\n \"policy_id\": \"<string>\",\n \"passed\": true,\n \"results\": [\n {\n \"rule\": {},\n \"passed\": true,\n \"detail\": \"<string>\"\n }\n ],\n \"attested_at\": \"<string>\",\n \"org_id\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"recorded": true,
"expires_at": "<string>",
"credits_used": 123
}Authorizations
API key as Bearer token
Body
Stable non-PII device identifier (agent-generated hash).
128Reporting agent version (e.g. "0.1.0").
32OS platform (e.g. "darwin", "win32", "linux").
32Identifier of the evaluated policy manifest.
128True iff every policy rule passed.
Per-rule evaluation results.
100Show child attributes
Show child attributes
ISO 8601 timestamp of the local evaluation.
40Ignored — the org is always derived from the API key. Never trusted from the body.
128