Scheduled jobs
Get
Fetch a scheduled job by ID.
GET /api/public/v1/scheduled-jobs/{job_id}Example
curl -X GET https://api.nairi.ai/api/public/v1/scheduled-jobs/JOB_ID \
-H "Authorization: Bearer $NAIRI_API_KEY"const res = await fetch(`https://api.nairi.ai/api/public/v1/scheduled-jobs/${jobId}`, {
headers: {
Authorization: `Bearer ${process.env.NAIRI_API_KEY}`,
},
});
const job = await res.json();require "net/http"
require "json"
require "uri"
uri = URI("https://api.nairi.ai/api/public/v1/scheduled-jobs/#{job_id}")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer #{ENV['NAIRI_API_KEY']}"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
job = JSON.parse(res.body)import os
import requests
res = requests.get(
f"https://api.nairi.ai/api/public/v1/scheduled-jobs/{job_id}",
headers={"Authorization": f"Bearer {os.environ['NAIRI_API_KEY']}"},
)
job = res.json()package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)
func main() {
jobID := os.Getenv("JOB_ID")
req, _ := http.NewRequest("GET", "https://api.nairi.ai/api/public/v1/scheduled-jobs/"+jobID, nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("NAIRI_API_KEY"))
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
raw, _ := io.ReadAll(res.Body)
var job map[string]any
json.Unmarshal(raw, &job)
fmt.Println(job)
}Response
{
"id": "sj_01K7XSRBBM0294N1WBD2M9EVQC",
"schedule": "0 9 * * *",
"timezone": "America/New_York",
"prompt": "Generate daily status report",
"connected_channel_id": "C09M8FRJYTF",
"job_type": "slack",
"is_threaded": true,
"is_enabled": true,
"last_executed_at": "2026-04-12T14:00:00.000Z",
"created_at": "2026-04-12T18:45:12.000Z",
"updated_at": "2026-04-12T18:45:12.000Z"
}last_executed_at is never null on the public API. For a job that has not actually fired yet (just created, or freshly re-enabled), this field is set to the most recent state change (creation or re-enable time) rather than null. This is intentional — it prevents the scheduler from firing the job immediately the moment it becomes eligible.