API Reference
Resumes
Upload and manage resume files. Uses pre-signed URLs for secure, direct-to-storage uploads.
Upload Flow
Resume uploads follow a three-step flow:
1. Request a pre-signed upload URL from the API. 2. Upload the file directly to storage using that URL. 3. Pass the returned `resumeUrl` when creating or updating a candidate profile.
This approach keeps large files off the API server and provides fast, reliable uploads.
Get Upload URL
Generates a pre-signed upload URL for a resume file. The response includes both the temporary `uploadUrl` for uploading the file and the permanent `resumeUrl` to use in candidate profiles.
/resumes/upload-url| Name | Type | Required | Description |
|---|---|---|---|
filename | string | Required | Original filename (e.g., resume.pdf) |
contentType | string | Required | MIME type: application/pdf, application/msword, or application/vnd.openxmlformats-officedocument.wordprocessingml.document |
# Step 1: 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": "john_doe_resume.pdf", "contentType": "application/pdf"}'
# Step 2: Upload file to S3
curl -X PUT "<uploadUrl>" -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
}Get Resume
Retrieves metadata for a specific resume including filename, content type, and the permanent resume URL. To generate a temporary download link, use the Get Download URL endpoint.
/resumes/:resumeIdcurl https://apply-api.boringproject.ai/api/v1/resumes/res_def456 \
-H "Authorization: Bearer bp_live_..."{
"resumeId": "res_def456",
"clientId": "client_xyz789",
"filename": "john_doe_resume.pdf",
"contentType": "application/pdf",
"resumeUrl": "https://s3.amazonaws.com/bucket/path/resume.pdf",
"uploadedAt": "2024-02-14T10:30:00Z"
}Get Download URL
Generates a temporary, pre-signed download URL for a specific resume. The URL expires after the time indicated in the response. Use this whenever you need to provide a secure, time-limited download link to end users.
/resumes/:resumeId/download-urlcurl https://apply-api.boringproject.ai/api/v1/resumes/res_def456/download-url \
-H "Authorization: Bearer bp_live_..."{
"url": "https://s3.amazonaws.com/bucket/resumes/client_xyz789/res_def456/resume.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&...",
"expiresIn": 3600
}Delete Resume
Permanently deletes a resume file from storage. Any candidate profiles still referencing this resume URL will retain the link, but the file will no longer be accessible.
/resumes/:resumeIdcurl -X DELETE https://apply-api.boringproject.ai/api/v1/resumes/res_def456 \
-H "Authorization: Bearer bp_live_..."Related docs
Continue reading
Candidate Profiles
Create, retrieve, update, and validate candidate profiles. A profile represents all the information needed to apply for jobs on behalf of a candidate.
Users
Create, retrieve, update, and delete users who apply for jobs through your platform.
Quickstart
Go from zero to submitting your first automated job application in under five minutes.