API Documentation
Integrate ScrollJob with your application or service
Post a Job via API
Submit job postings programmatically. All jobs are moderated before being published.
Authentication required: direct job creation endpoints are now available only to signed-in users from their employer cabinet.
POST
/api/jobs/
Request Headers
Content-Type: application/json
Required Fields
| Field | Type | Description |
|---|---|---|
| title * | string | Job title |
| company * | string | Company name |
| full_description * | string | Complete job description |
| submitted_by_email * | Your email for notifications | |
| location or is_remote * | string / boolean | Job location or set is_remote to true |
| apply_url or apply_email * | url / email | How candidates can apply |
Optional Fields
| Field | Type | Description |
|---|---|---|
| category | string | Job category (e.g., "Software Development") |
| employment_type | string | full-time, part-time, contract, or internship |
| salary_min | number | Minimum salary |
| salary_max | number | Maximum salary |
| company_website | url | Company website URL |
Example Request
curl -X POST https://be.scrolljob.org/api/jobs/ \
-H "Content-Type: application/json" \
-d '{
"title": "Senior Python Developer",
"company": "Tech Company Inc",
"location": "Kyiv, Ukraine",
"is_remote": true,
"full_description": "We are looking for...",
"category": "Software Development",
"employment_type": "full-time",
"salary_min": 3000,
"salary_max": 5000,
"apply_url": "https://company.com/apply",
"company_website": "https://company.com",
"submitted_by_email": "[email protected]"
}'
Success Response (201)
{
"success": true,
"message": "Job submitted successfully. It will be reviewed shortly.",
"job_id": 123,
"slug": "senior-python-developer"
}
Error Response (400)
{
"error": "Validation failed",
"errors": {
"title": ["This field is required."],
"submitted_by_email": ["Enter a valid email address."]
}
}
Import Jobs from CSV
Bulk import jobs from a CSV file. All imported jobs will have status "pending" and require moderation.
Authentication required: CSV import is available only for signed-in employer accounts.
POST
/api/jobs/import/
Request
Content-Type: multipart/form-data
Form field: file (CSV file)
CSV Format
The CSV file must include the following columns:
title,company,location,is_remote,full_description,category,employment_type,salary_min,salary_max,apply_url,apply_email,company_website,submitted_by_email
CSV Example
title,company,location,is_remote,full_description,category,employment_type,salary_min,salary_max,apply_url,apply_email,company_website,submitted_by_email
"Senior Python Developer","Tech Co","Kyiv",true,"We are looking for...","Software","full-time",3000,5000,"https://apply.com",,"https://company.com","[email protected]"
"DevOps Engineer","Cloud Inc","Remote",true,"Experienced DevOps...","Infrastructure","full-time",4000,6000,,"[email protected]","https://cloud.com","[email protected]"
Example Request
curl -X POST https://be.scrolljob.org/api/jobs/import/ \
-F "[email protected]"
Success Response (200)
{
"success": true,
"imported": 15,
"errors": null
}
Response with Errors
{
"success": true,
"imported": 13,
"errors": [
"Row 3: Missing required field: title",
"Row 7: Invalid email format"
]
}
Best Practices
- All submitted jobs are moderated before publication
- Provide accurate contact information for status updates
- Use meaningful job titles and detailed descriptions
- Specify either location or mark as remote
- Include salary information when possible