Get log
curl --request GET \
--url https://api.markifact.com/v1/logs/{log_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.markifact.com/v1/logs/{log_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.markifact.com/v1/logs/{log_id}', 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.markifact.com/v1/logs/{log_id}",
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://api.markifact.com/v1/logs/{log_id}"
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://api.markifact.com/v1/logs/{log_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.markifact.com/v1/logs/{log_id}")
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{
"id": "<string>",
"operation_id": "gads_get_campaigns",
"status": "success",
"source": {
"type": "mcp",
"id": "<string>",
"run_id": "<string>",
"name": "<string>"
},
"user": {
"id": "<string>",
"email": "<string>"
},
"started_at": 1784874174,
"credits_used": 123,
"cache_hit": true,
"metadata": {},
"operation_version": 123,
"completed_at": 123,
"input": "<unknown>",
"output": "<unknown>"
}{
"detail": "<unknown>"
}{
"detail": "<unknown>"
}Logs
Get log
Fetch a single Markifact operation log by ID.
GET
/
v1
/
logs
/
{log_id}
Get log
curl --request GET \
--url https://api.markifact.com/v1/logs/{log_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.markifact.com/v1/logs/{log_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.markifact.com/v1/logs/{log_id}', 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.markifact.com/v1/logs/{log_id}",
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://api.markifact.com/v1/logs/{log_id}"
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://api.markifact.com/v1/logs/{log_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.markifact.com/v1/logs/{log_id}")
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{
"id": "<string>",
"operation_id": "gads_get_campaigns",
"status": "success",
"source": {
"type": "mcp",
"id": "<string>",
"run_id": "<string>",
"name": "<string>"
},
"user": {
"id": "<string>",
"email": "<string>"
},
"started_at": 1784874174,
"credits_used": 123,
"cache_hit": true,
"metadata": {},
"operation_version": 123,
"completed_at": 123,
"input": "<unknown>",
"output": "<unknown>"
}{
"detail": "<unknown>"
}{
"detail": "<unknown>"
}Returns one log. The response is the same object List logs returns, so use this when you already have a log ID and do not want to page.
See List logs for the full field reference.
A
Endpoint
GET /v1/logs/{log_id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
log_id | string | Yes | The log ID. |
Example Request
curl "https://api.markifact.com/v1/logs/1e38c1c2-1d85-4094-ab55-1f35c78ab436" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"id": "1e38c1c2-1d85-4094-ab55-1f35c78ab436",
"operation_id": "gads_get_campaigns",
"operation_version": 2,
"status": "error",
"source": {
"type": "mcp",
"id": "mcp_7f21c9",
"run_id": null,
"name": "Client A MCP"
},
"user": {
"id": "Q8Wvn9gL8GUQ11SsJAnMfiyyGOA2",
"email": "member@example.com"
},
"started_at": 1784874174,
"completed_at": 1784874176,
"credits_used": 0,
"cache_hit": false,
"input": { "customer_id": "123-456-7890", "date_range": "LAST_30_DAYS" },
"output": {
"error": true,
"type": "NodeError",
"message": "The Google Ads account is no longer accessible with this connection."
},
"metadata": { "tool_name": "run_operation" }
}
Errors
| Status | Meaning |
|---|---|
401 | Missing, invalid, or revoked API key. |
404 | No log with that ID in your team, or the log is older than your plan’s history window. |
404 for an aged-out log includes the window in the response so you can tell it apart from a genuinely unknown ID:
{
"detail": {
"message": "Log not found",
"history_days": 30
}
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The log ID.
Response
Log returned.
Log ID.
Markifact operation that ran.
Example:
"gads_get_campaigns"
Available options:
success, error, skipped, stop, start Show child attributes
Show child attributes
Show child attributes
Show child attributes
Start time in Unix seconds.
Example:
1784874174
Whether the result came from cache instead of the provider.
Extra context. Keys depend on the source: node_id, node_label, and retry_attempts for workflows, tool_name for MCP.
Completion time in Unix seconds. Null while the operation is still running.
Input the operation ran with. Shape depends on the operation.
Result the operation returned, or the error payload when status is error. Shape depends on the operation.

