Getting Started
Testing
Use demo profiles to test your integration flow before applying with real candidate data.
Demo Profiles
Every account has access to pre-built demo profiles — complete candidate profiles with realistic data that you can use to test the full application flow. Demo profiles are globally available and maintained by the platform.
Use demo profiles to verify your integration works end-to-end before creating real users and profiles. When you apply with a demo profile, a real application is submitted using your credits, so you can confirm the entire pipeline works.
Fetch Demo Profiles
Retrieve the list of available demo profiles. Each profile is fully populated with personal information, work experience, education, skills, and a resume — ready to use with the apply endpoint immediately.
/demo/profilescurl https://apply-api.boringproject.ai/api/v1/demo/profiles \
-H "Authorization: Bearer bp_live_..."[
{
"candidateProfileId": "prof_demo_xyz789",
"userId": "usr_demo_001",
"isDemo": true,
"isComplete": true,
"personalInformation": {
"firstName": "Jane",
"lastName": "Smith",
"email": "jane.smith@example.com",
"countryCode": "+1",
"phoneNumber": "4155559876",
"city": "San Francisco",
"state": "CA",
"country": "United States"
},
"workExperience": [
{
"jobTitle": "Software Engineer",
"company": "Tech Corp",
"startDate": "2020-01",
"currentlyWorkHere": true
}
],
"education": [
{
"institution": { "name": "UC Berkeley" },
"degree": { "degreeName": "B.S. Computer Science" },
"startDate": "2016-09",
"endDate": "2020-05"
}
],
"skills": [
{ "skill": "JavaScript", "experience": "5" },
{ "skill": "Python", "experience": "4" },
{ "skill": "React", "experience": "3" }
],
"languages": [
{ "language": "English", "level": "Native" }
],
"certifications": [],
"achievements": [],
"miscellaneous": {
"totalExperience": "4",
"linkedinUrl": "https://linkedin.com/in/janesmith",
"willingToRelocate": "Yes",
"authorisedToWork": ["United States"]
},
"resumeUrl": "https://s3.amazonaws.com/.../demo_resume.pdf",
"createdAt": "2024-01-01T00:00:00Z"
}
]Fetch Demo Users
Retrieve the list of available demo users. Each demo user is linked to one or more demo profiles and can be used as the userId when creating sessions.
/demo/userscurl https://apply-api.boringproject.ai/api/v1/demo/users \
-H "Authorization: Bearer bp_live_..."[
{
"userId": "usr_demo_001",
"externalUserId": "demo_user_1",
"name": "Jane Smith",
"email": "jane.smith@example.com",
"isDemo": true,
"status": "active",
"createdAt": "2024-01-01T00:00:00Z"
}
]Test an Application
Use a demo profile's candidateProfileId with the POST /sessions/apply endpoint to submit a real test application. Pass overrideEmail with your own email address so ATS confirmation emails are sent to you instead of the demo profile's email. This uses your credits and submits a real application — allowing you to verify the full pipeline works before using your own candidate data.
/sessions/applycurl -X POST https://apply-api.boringproject.ai/api/v1/sessions/apply \
-H "Authorization: Bearer bp_live_..." \
-H "Content-Type: application/json" \
-d '{
"candidateProfileId": "prof_demo_xyz789",
"overrideEmail": "you@yourcompany.com",
"jobs": [
{ "companyName": "Acme Corp", "title": "Senior Software Engineer", "jobId": "12345", "link": "https://boards.greenhouse.io/acme/jobs/12345" }
]
}'{
"sessionId": "sess_abc123",
"type": "run_once",
"userId": "usr_demo_001",
"candidateProfileId": "prof_demo_xyz789",
"status": "active",
"stats": { "totalRuns": 1, "totalApplications": 0, "successfulApplications": 0, "failedApplications": 0, "jobsQueued": 1 },
"searchContext": { "titles": ["Senior Software Engineer"], "locations": [] },
"createdAt": "2024-02-14T11:00:00Z"
}Moving to Production
Once you've verified the flow works with demo profiles, create your own users, profiles, and resumes to start applying with real candidate data. The request format and endpoints are identical — you just swap the demo candidateProfileId for your own.
Related docs
Continue reading
Authentication
Authenticate requests to the Boring Project API using Bearer tokens with your API key.
Quickstart
Go from zero to submitting your first automated job application in under five minutes.
Error Handling
Understand the API error format, HTTP status codes, error code categories, and best practices for handling errors.