Get an enrollment batch
curl --request GET \
--url https://api.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_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.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_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.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_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.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_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.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_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{
"success": true,
"data": {
"batch_id": "eb8d2f41-3c7a-4e19-b5d2-7f0a1c9e6b34",
"status": "ready",
"version": 2,
"source": "api",
"campaign": {
"id": "3f9a1c27-8e4b-4d2a-b6f0-7c1e5a9d2b84",
"name": "Senior Backend Engineer, Monzo"
},
"sender": {
"team_member_id": "7c1e4a9b-3d6f-4b2e-8a5c-9f1d3b7e5a20",
"name": "Riya Kapoor",
"from_email": "riya@acmetalent.com"
},
"job": {
"id": "b21d7e4a-5c9f-4e3b-a1d6-8f2c4e7b9a13",
"title": "Senior Backend Engineer",
"pipeline_stage_id": "e4a0c3b7-1f5d-4a8e-9b2c-6d3f7a1e5c88",
"pipeline_stage": "Contacted"
},
"start": {
"mode": "scheduled",
"at": "2026-10-19T08:00:00.000Z",
"timezone": "Europe/London"
},
"created_by": {
"type": "api_key",
"id": "0d4b8f2e-6a1c-4e9b-b3d7-5f2a8c1e4b96",
"name": "Greenhouse sync"
},
"created_at": "2026-10-13T11:20:00.000Z",
"expires_at": "2026-10-14T11:20:40.000Z",
"started_at": null,
"progress": null,
"summary": {
"total": 4,
"preparing": 0,
"ready": 1,
"needs_input": 2,
"blocked": 1,
"excluded": 0,
"enrolled": 0,
"rejected_at_start": 0
},
"warnings": [
{
"code": "adds_to_job_pipeline",
"message": "1 person will be added to Senior Backend Engineer at Contacted.",
"details": {
"count": 1
}
},
{
"code": "job_automation_will_run",
"message": "Moving people to this stage starts these automations: Notify hiring manager.",
"details": {
"automations": [
"Notify hiring manager"
]
}
}
],
"recipients": [
{
"recipient_id": "a1c3e5f7-2b4d-4f6a-8c0e-1d3f5b7a9c21",
"person_id": "2f6b9d1e-4a8c-4e3f-b7d2-1c5a9e3b7f40",
"name": "Sam Patel",
"email": "sam@gmail.com",
"status": "ready",
"issues": [
{
"code": "enrolled_in_other_campaign",
"message": "Also in 'Q4 platform engineers' (running).",
"details": {
"campaigns": [
"Q4 platform engineers"
]
}
}
],
"overrides": [],
"override_reason": null,
"enrollment_id": null,
"first_email_estimated_at": "2026-10-19T08:00:00.000Z",
"steps": [
{
"step_id": "5b0f3c8e-2a71-4d0e-9a51-6f0c2d7e1a43",
"order": 1,
"type": "email",
"send_after_days": 0,
"subject": "Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Sam,</div><div><br></div><div>Your work scaling payments at Wise stood out. I'm hiring a <strong>Senior Backend Engineer</strong> at Monzo. Loved your PyCon talk on async Python.</div><div><br></div><div>You can see the role <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://jobs.stardex.com/acme-talent/senior-backend-engineer-k3f9a2\">here</a>. Open to a chat?</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "9d2e7a14-61c3-4b8f-8f0e-3a5c9b2d4e17",
"order": 2,
"type": "email",
"send_after_days": 3,
"subject": "Re: Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Sam, following up on my note.</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "c4a8e2f1-7b3d-4e6a-9c1f-2d8b5a7e3f90",
"order": 3,
"type": "manual",
"send_after_days": 2,
"subject": null,
"body_html": "<div>Call Sam if they opened but did not reply.</div>",
"edited": false
}
]
},
{
"recipient_id": "b2d4f6a8-3c5e-4a7b-9d1f-2e4a6c8b0d32",
"person_id": "6a3e8c2f-9b1d-4f7a-a5c3-8e2b6d4f1a73",
"name": "Tom Reed",
"email": "tom@reed.dev",
"status": "needs_input",
"issues": [
{
"code": "missing_variables",
"message": "Fill in or leave blank: personalization_line.",
"details": {
"variables": [
"personalization_line"
]
}
}
],
"overrides": [],
"override_reason": null,
"enrollment_id": null,
"first_email_estimated_at": null,
"steps": [
{
"step_id": "5b0f3c8e-2a71-4d0e-9a51-6f0c2d7e1a43",
"order": 1,
"type": "email",
"send_after_days": 0,
"subject": "Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Tom,</div><div><br></div><div>Your Kafka migration at Deliveroo stood out. I'm hiring a <strong>Senior Backend Engineer</strong> at Monzo. {{personalization_line}}</div><div><br></div><div>You can see the role <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://jobs.stardex.com/acme-talent/senior-backend-engineer-k3f9a2\">here</a>. Open to a chat?</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "9d2e7a14-61c3-4b8f-8f0e-3a5c9b2d4e17",
"order": 2,
"type": "email",
"send_after_days": 3,
"subject": "Re: Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Tom, following up on my note. We placed 3 engineers at Monzo last year.</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "c4a8e2f1-7b3d-4e6a-9c1f-2d8b5a7e3f90",
"order": 3,
"type": "manual",
"send_after_days": 2,
"subject": null,
"body_html": "<div>Call Tom if they opened but did not reply.</div>",
"edited": false
}
]
},
{
"recipient_id": "c3e5a7b9-4d6f-4b8c-ae2a-3f5b7d9c1e43",
"person_id": "9c4f1a7e-2d8b-4e6c-b3a9-5f1d7c3e8b24",
"name": "Priya Shah",
"email": "priya@shah.io",
"status": "blocked",
"issues": [
{
"code": "unsubscribed",
"message": "Unsubscribed from your emails on 2 Sep 2026."
}
],
"overrides": [],
"override_reason": null,
"enrollment_id": null,
"first_email_estimated_at": null,
"steps": []
},
{
"recipient_id": "d4f6b8ca-5e7a-4c9d-bf3b-4a6c8e0d2f54",
"person_id": "4e8b2d6f-1a3c-4e9b-8f5d-7c2a6e1b3d95",
"name": "Mark Chen",
"email": "mark.chen@gmail.com",
"status": "needs_input",
"issues": [
{
"code": "company_do_not_contact",
"message": "Works at Globex, which is marked do not contact. Override with a reason to include them.",
"details": {
"companies": [
"Globex"
]
}
},
{
"code": "likely_bounce",
"message": "This email looks risky and may bounce."
}
],
"overrides": [],
"override_reason": null,
"enrollment_id": null,
"first_email_estimated_at": null,
"steps": [
{
"step_id": "5b0f3c8e-2a71-4d0e-9a51-6f0c2d7e1a43",
"order": 1,
"type": "email",
"send_after_days": 0,
"subject": "Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Mark,</div><div><br></div><div>Leading the ledger rebuild at Globex stood out. I'm hiring a <strong>Senior Backend Engineer</strong> at Monzo. Your QCon London talk was great.</div><div><br></div><div>You can see the role <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://jobs.stardex.com/acme-talent/senior-backend-engineer-k3f9a2\">here</a>. Open to a chat?</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "9d2e7a14-61c3-4b8f-8f0e-3a5c9b2d4e17",
"order": 2,
"type": "email",
"send_after_days": 3,
"subject": "Re: Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Mark, following up on my note. We placed 3 engineers at Monzo last year.</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "c4a8e2f1-7b3d-4e6a-9c1f-2d8b5a7e3f90",
"order": 3,
"type": "manual",
"send_after_days": 2,
"subject": null,
"body_html": "<div>Call Mark if they opened but did not reply.</div>",
"edited": false
}
]
}
],
"sample": {
"recipient_id": "a1c3e5f7-2b4d-4f6a-8c0e-1d3f5b7a9c21",
"subject": "Senior Backend Engineer role at Monzo",
"body_text": "Hi Sam,\n\nYour work scaling payments at Wise stood out. I'm hiring a Senior Backend Engineer at Monzo. Loved your PyCon talk on async Python.\n\nYou can see the role here (https://jobs.stardex.com/acme-talent/senior-backend-engineer-k3f9a2). Open to a chat?\n\nRiya"
}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Campaigns
Get an enrollment batch
The batch’s people with their status and issues, warnings, one sample email, and the version and summary.ready to pass to start. Add include=content for every person’s final steps. Needs campaigns:read.
GET
/
v1
/
campaigns
/
{id}
/
enrollment-batches
/
{batch_id}
Get an enrollment batch
curl --request GET \
--url https://api.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_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.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_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.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_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.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_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.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stardex.ai/v1/campaigns/{id}/enrollment-batches/{batch_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{
"success": true,
"data": {
"batch_id": "eb8d2f41-3c7a-4e19-b5d2-7f0a1c9e6b34",
"status": "ready",
"version": 2,
"source": "api",
"campaign": {
"id": "3f9a1c27-8e4b-4d2a-b6f0-7c1e5a9d2b84",
"name": "Senior Backend Engineer, Monzo"
},
"sender": {
"team_member_id": "7c1e4a9b-3d6f-4b2e-8a5c-9f1d3b7e5a20",
"name": "Riya Kapoor",
"from_email": "riya@acmetalent.com"
},
"job": {
"id": "b21d7e4a-5c9f-4e3b-a1d6-8f2c4e7b9a13",
"title": "Senior Backend Engineer",
"pipeline_stage_id": "e4a0c3b7-1f5d-4a8e-9b2c-6d3f7a1e5c88",
"pipeline_stage": "Contacted"
},
"start": {
"mode": "scheduled",
"at": "2026-10-19T08:00:00.000Z",
"timezone": "Europe/London"
},
"created_by": {
"type": "api_key",
"id": "0d4b8f2e-6a1c-4e9b-b3d7-5f2a8c1e4b96",
"name": "Greenhouse sync"
},
"created_at": "2026-10-13T11:20:00.000Z",
"expires_at": "2026-10-14T11:20:40.000Z",
"started_at": null,
"progress": null,
"summary": {
"total": 4,
"preparing": 0,
"ready": 1,
"needs_input": 2,
"blocked": 1,
"excluded": 0,
"enrolled": 0,
"rejected_at_start": 0
},
"warnings": [
{
"code": "adds_to_job_pipeline",
"message": "1 person will be added to Senior Backend Engineer at Contacted.",
"details": {
"count": 1
}
},
{
"code": "job_automation_will_run",
"message": "Moving people to this stage starts these automations: Notify hiring manager.",
"details": {
"automations": [
"Notify hiring manager"
]
}
}
],
"recipients": [
{
"recipient_id": "a1c3e5f7-2b4d-4f6a-8c0e-1d3f5b7a9c21",
"person_id": "2f6b9d1e-4a8c-4e3f-b7d2-1c5a9e3b7f40",
"name": "Sam Patel",
"email": "sam@gmail.com",
"status": "ready",
"issues": [
{
"code": "enrolled_in_other_campaign",
"message": "Also in 'Q4 platform engineers' (running).",
"details": {
"campaigns": [
"Q4 platform engineers"
]
}
}
],
"overrides": [],
"override_reason": null,
"enrollment_id": null,
"first_email_estimated_at": "2026-10-19T08:00:00.000Z",
"steps": [
{
"step_id": "5b0f3c8e-2a71-4d0e-9a51-6f0c2d7e1a43",
"order": 1,
"type": "email",
"send_after_days": 0,
"subject": "Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Sam,</div><div><br></div><div>Your work scaling payments at Wise stood out. I'm hiring a <strong>Senior Backend Engineer</strong> at Monzo. Loved your PyCon talk on async Python.</div><div><br></div><div>You can see the role <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://jobs.stardex.com/acme-talent/senior-backend-engineer-k3f9a2\">here</a>. Open to a chat?</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "9d2e7a14-61c3-4b8f-8f0e-3a5c9b2d4e17",
"order": 2,
"type": "email",
"send_after_days": 3,
"subject": "Re: Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Sam, following up on my note.</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "c4a8e2f1-7b3d-4e6a-9c1f-2d8b5a7e3f90",
"order": 3,
"type": "manual",
"send_after_days": 2,
"subject": null,
"body_html": "<div>Call Sam if they opened but did not reply.</div>",
"edited": false
}
]
},
{
"recipient_id": "b2d4f6a8-3c5e-4a7b-9d1f-2e4a6c8b0d32",
"person_id": "6a3e8c2f-9b1d-4f7a-a5c3-8e2b6d4f1a73",
"name": "Tom Reed",
"email": "tom@reed.dev",
"status": "needs_input",
"issues": [
{
"code": "missing_variables",
"message": "Fill in or leave blank: personalization_line.",
"details": {
"variables": [
"personalization_line"
]
}
}
],
"overrides": [],
"override_reason": null,
"enrollment_id": null,
"first_email_estimated_at": null,
"steps": [
{
"step_id": "5b0f3c8e-2a71-4d0e-9a51-6f0c2d7e1a43",
"order": 1,
"type": "email",
"send_after_days": 0,
"subject": "Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Tom,</div><div><br></div><div>Your Kafka migration at Deliveroo stood out. I'm hiring a <strong>Senior Backend Engineer</strong> at Monzo. {{personalization_line}}</div><div><br></div><div>You can see the role <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://jobs.stardex.com/acme-talent/senior-backend-engineer-k3f9a2\">here</a>. Open to a chat?</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "9d2e7a14-61c3-4b8f-8f0e-3a5c9b2d4e17",
"order": 2,
"type": "email",
"send_after_days": 3,
"subject": "Re: Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Tom, following up on my note. We placed 3 engineers at Monzo last year.</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "c4a8e2f1-7b3d-4e6a-9c1f-2d8b5a7e3f90",
"order": 3,
"type": "manual",
"send_after_days": 2,
"subject": null,
"body_html": "<div>Call Tom if they opened but did not reply.</div>",
"edited": false
}
]
},
{
"recipient_id": "c3e5a7b9-4d6f-4b8c-ae2a-3f5b7d9c1e43",
"person_id": "9c4f1a7e-2d8b-4e6c-b3a9-5f1d7c3e8b24",
"name": "Priya Shah",
"email": "priya@shah.io",
"status": "blocked",
"issues": [
{
"code": "unsubscribed",
"message": "Unsubscribed from your emails on 2 Sep 2026."
}
],
"overrides": [],
"override_reason": null,
"enrollment_id": null,
"first_email_estimated_at": null,
"steps": []
},
{
"recipient_id": "d4f6b8ca-5e7a-4c9d-bf3b-4a6c8e0d2f54",
"person_id": "4e8b2d6f-1a3c-4e9b-8f5d-7c2a6e1b3d95",
"name": "Mark Chen",
"email": "mark.chen@gmail.com",
"status": "needs_input",
"issues": [
{
"code": "company_do_not_contact",
"message": "Works at Globex, which is marked do not contact. Override with a reason to include them.",
"details": {
"companies": [
"Globex"
]
}
},
{
"code": "likely_bounce",
"message": "This email looks risky and may bounce."
}
],
"overrides": [],
"override_reason": null,
"enrollment_id": null,
"first_email_estimated_at": null,
"steps": [
{
"step_id": "5b0f3c8e-2a71-4d0e-9a51-6f0c2d7e1a43",
"order": 1,
"type": "email",
"send_after_days": 0,
"subject": "Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Mark,</div><div><br></div><div>Leading the ledger rebuild at Globex stood out. I'm hiring a <strong>Senior Backend Engineer</strong> at Monzo. Your QCon London talk was great.</div><div><br></div><div>You can see the role <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://jobs.stardex.com/acme-talent/senior-backend-engineer-k3f9a2\">here</a>. Open to a chat?</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "9d2e7a14-61c3-4b8f-8f0e-3a5c9b2d4e17",
"order": 2,
"type": "email",
"send_after_days": 3,
"subject": "Re: Senior Backend Engineer role at Monzo",
"body_html": "<div>Hi Mark, following up on my note. We placed 3 engineers at Monzo last year.</div><div><br></div><div>Riya</div>",
"edited": false
},
{
"step_id": "c4a8e2f1-7b3d-4e6a-9c1f-2d8b5a7e3f90",
"order": 3,
"type": "manual",
"send_after_days": 2,
"subject": null,
"body_html": "<div>Call Mark if they opened but did not reply.</div>",
"edited": false
}
]
}
],
"sample": {
"recipient_id": "a1c3e5f7-2b4d-4f6a-8c0e-1d3f5b7a9c21",
"subject": "Senior Backend Engineer role at Monzo",
"body_text": "Hi Sam,\n\nYour work scaling payments at Wise stood out. I'm hiring a Senior Backend Engineer at Monzo. Loved your PyCon talk on async Python.\n\nYou can see the role here (https://jobs.stardex.com/acme-talent/senior-backend-engineer-k3f9a2). Open to a chat?\n\nRiya"
}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Authorizations
Authenticate with a Bearer token: API key, OAuth token, or session token.
Query Parameters
content: also return every person's final steps.
Available options:
content Was this page helpful?