List recent jobs
Return recent Airbyte sync jobs for the connection, newest first. Data is read live from Airbyte.
Each job is Airbyte's own record passed through unchanged (see the Job schema for exact field names). Airbyte's next/previous paging fields are not forwarded.
An empty data array means this connection has genuinely never run. It is never a symptom: an unreachable Airbyte, a rejected token, or a malformed upstream response all raise (401 upstream errors surface as a failure, and a 200 without a job array returns 502 airbyte_unavailable) rather than being flattened into "no runs". Render [] as fact and the error as "could not reach the sync provider".
This is the only endpoint on this surface that reads Airbyte live. GET /connections and GET /sync-events read Mythic's own database, so no Airbyte outage can turn them into a false empty either.
curl -X GET "https://mythic-analytics.gulp.workers.dev/client/v1/airbyte/connections/example_string/jobs?limit=10" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://mythic-analytics.gulp.workers.dev/client/v1/airbyte/connections/example_string/jobs?limit=10"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://mythic-analytics.gulp.workers.dev/client/v1/airbyte/connections/example_string/jobs?limit=10", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://mythic-analytics.gulp.workers.dev/client/v1/airbyte/connections/example_string/jobs?limit=10", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://mythic-analytics.gulp.workers.dev/client/v1/airbyte/connections/example_string/jobs?limit=10')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"success": true,
"data": [
{
"jobId": 68374749,
"status": "succeeded",
"jobType": "sync",
"connectionId": "871f879d-9c37-426b-be7b-eeaca16333f3",
"startTime": "2026-01-30T10:14:37Z",
"lastUpdatedAt": "2026-01-30T10:17:22Z",
"duration": "PT2M45S",
"bytesSynced": 307376,
"rowsSynced": 132
}
]
}
{
"error": "Unauthorized",
"message": "Authentication required. Please provide a valid API token",
"code": 401
}
{
"error": "Not Found",
"message": "The requested resource was not found",
"code": 404
}
{
"error": "Error",
"message": "`airbyte_unavailable` — Airbyte answered with something that is not a job list. Distinct from an empty list, which is a real answer.
",
"code": 502
}
/connections/{id}/jobsTarget server for requests. Edit to use your own host.
Agency key as bearer token, format Bearer ak_.... Grants full read-write access scoped to the agency. Agency-wide scoped keys (mcp_ with no fixed location) are accepted too and need airbyte:read or airbyte:write; a client-bound mcp_ key gets 403 agency_key_required. See Using an mcp_ key over HTTP.
Bearer ak_.... Grants full read-write access scoped to the agency. Agency-wide scoped keys (mcp_ with no fixed location) are accepted too and need airbyte:read or airbyte:write; a client-bound mcp_ key gets 403 agency_key_required. See Using an mcp_ key over HTTP.
Location secret key as bearer token, format Bearer sk_.... Grants read-only access; the agency is resolved from the location. Write endpoints return 403.
Bearer sk_.... Grants read-only access; the agency is resolved from the location. Write endpoints return 403.
Mythic connection record identifier (the local UUID, not the Airbyte connection ID).
Maximum jobs to return. Default 10, clamped to 1–100.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. Agency key as bearer token, format Bearer ak_.... Grants full read-write access scoped to the agency. Agency-wide scoped keys (mcp_ with no fixed location) are accepted too and need airbyte:read or airbyte:write; a client-bound mcp_ key gets 403 agency_key_required. See Using an mcp_ key over HTTP.
Bearer token. Location secret key as bearer token, format Bearer sk_.... Grants read-only access; the agency is resolved from the location. Write endpoints return 403.
Path Parameters
Mythic connection record identifier (the local UUID, not the Airbyte connection ID).
Query Parameters
Maximum jobs to return. Default 10, clamped to 1–100.
Responses
Jobs, newest first.