import requests
url = "https://platform.ankra.app/api/v1/clusters/ovh/{cluster_id}/nodes/{node_id}/console-log"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://platform.ankra.app/api/v1/clusters/ovh/{cluster_id}/nodes/{node_id}/console-log', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://platform.ankra.app/api/v1/clusters/ovh/{cluster_id}/nodes/{node_id}/console-log \
--header 'Authorization: Bearer <token>'{
"operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"step_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"node_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"job_name": "<string>",
"status": "<string>",
"completed": true,
"attached_to_existing_run": true,
"report": {},
"error_excerpt": "<string>"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "Cluster not found"
}Read node console log
Bearer PAT authentication; RBAC permission clusters.operate. Dispatches the read-only ovh_node_console_log job: it reads the newest 1000 lines of the node’s serial console from the OVH compute API, authenticated with the OpenStack credential the cluster’s cloud controller already uses, so it answers for a node that SSH and the agent cannot reach. It changes nothing on the node, the instance or the credential. The report carries console_output and says when the answer is incomplete: line_limit_reached means older console output may exist, and truncated means the 96 KiB cap dropped the oldest lines. Even when neither is set, older output may exist that OVH did not return. Values the platform’s secret detector recognises, such as a token a boot script printed, are replaced with [REDACTED:...] markers before the text is stored, and redacted_values counts the markers in the answer. The call waits for the report within a bounded budget; a slower job answers the operation ids to poll. Repeated calls attach to an in-flight or recent run instead of dispatching duplicates. Browser mutations require CSRF.
import requests
url = "https://platform.ankra.app/api/v1/clusters/ovh/{cluster_id}/nodes/{node_id}/console-log"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://platform.ankra.app/api/v1/clusters/ovh/{cluster_id}/nodes/{node_id}/console-log', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://platform.ankra.app/api/v1/clusters/ovh/{cluster_id}/nodes/{node_id}/console-log \
--header 'Authorization: Bearer <token>'{
"operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"step_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"node_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"job_name": "<string>",
"status": "<string>",
"completed": true,
"attached_to_existing_run": true,
"report": {},
"error_excerpt": "<string>"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "Cluster not found"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.