Getting Started
Quickstart
Go from zero to submitting your first automated job application in under five minutes.
Step 1: Create a User
Start by creating a user to represent the job seeker on your platform. The externalUserId should be your system's identifier for this person.
/userscurl -X POST https://apply-api.boringproject.ai/api/v1/users \
-H "Authorization: Bearer bp_live_..." \
-H "Content-Type: application/json" \
-d '{
"externalUserId": "user_12345",
"name": "John Doe",
"email": "john@example.com",
"maxTotalJobApplications": 1000,
"maxJobApplicationsPerMonth": 100
}'{
"userId": "usr_abc123",
"clientId": "client_xyz789",
"externalUserId": "user_12345",
"name": "John Doe",
"email": "john@example.com",
"maxTotalJobApplications": 1000,
"maxJobApplicationsPerMonth": 100,
"status": "active",
"createdAt": "2024-02-14T10:30:00Z"
}Step 2: Upload a Resume
Get a pre-signed S3 URL, upload the resume file, then use the returned resumeUrl when creating a profile.
/resumes/upload-url# Get upload URL
curl -X POST https://apply-api.boringproject.ai/api/v1/resumes/upload-url \
-H "Authorization: Bearer bp_live_..." \
-H "Content-Type: application/json" \
-d '{"filename": "resume.pdf", "contentType": "application/pdf"}'
# Upload file to S3
curl -X PUT "<uploadUrl from response>" \
-H "Content-Type: application/pdf" \
--data-binary @resume.pdf{
"resumeId": "res_def456",
"uploadUrl": "https://s3.amazonaws.com/bucket/path?X-Amz-Algorithm=...",
"resumeUrl": "https://s3.amazonaws.com/bucket/path/resume.pdf",
"expiresIn": 3600
}Step 3: Create a Profile
Create a candidate profile with personal information, work experience, education, miscellaneous details, and the resume URL from the previous step.
/profilescurl -X POST https://apply-api.boringproject.ai/api/v1/profiles \
-H "Authorization: Bearer bp_live_..." \
-H "Content-Type: application/json" \
-d '{
"userId": "usr_abc123",
"personalInformation": {
"firstName": "John", "lastName": "Doe",
"email": "john@example.com", "countryCode": "+1", "phoneNumber": "4155551234",
"gender": "Male", "city": "San Francisco", "state": "CA", "country": "United States"
},
"workExperience": [{ "jobTitle": "Software Engineer", "company": "Tech Corp", "startDate": "2020-01", "currentlyWorkHere": true }],
"education": [{ "institution": { "name": "State University" }, "degree": { "degreeName": "B.S. Computer Science" } }],
"skills": [{ "skill": "Python", "experience": "5" }, { "skill": "React", "experience": "4" }],
"miscellaneous": {
"totalExperience": "5", "expectedSalaryAmount": "150000", "expectedSalaryCurrency": "USD",
"noticePeriod": "30", "willingToRelocate": "Yes", "authorisedToWork": ["United States"], "visaRequirement": "No",
"linkedinUrl": "https://linkedin.com/in/johndoe"
},
"resumeUrl": "https://s3.amazonaws.com/.../resume.pdf"
}'Step 4: Apply to Jobs
Create a session to apply to specific jobs. Pass the profile ID and an array of job URLs.
/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_xyz789",
"jobs": [
{ "companyName": "Acme Corp", "title": "Senior Software Engineer", "jobId": "12345", "link": "https://boards.greenhouse.io/acme/jobs/12345" }
]
}'Related docs
Continue reading
Introduction
The Boring Project API enables enterprise clients to automate job applications for their users across ATS platforms.
Testing
Use demo profiles to test your integration flow before applying with real candidate data.
Candidate Profiles
Manage candidate profiles containing personal information, work experience, education, skills, languages, certifications, achievements, miscellaneous details, and resumes.