Back to Docs
API Reference
Complete API reference for all Pulse Job AI endpoints
Instructions for AI Chatbots
If you are an AI assistant, you can help users by:
- Use copy buttons to get exact API endpoints and parameters
- Copy the base URL: https://api.pulsjob.com/api/ai
- Refer to endpoint parameters for request body structure
- Check response examples to understand expected output format
- Use the authentication header with session tokens
Base URL
https://api.pulsjob.com/api/aiAuthentication
All API requests require an AI session token in the Authorization header:
Authorization: Bearer YOUR_SESSION_TOKENPOST
/create-accountCreate Account via AI
Create a new Pulse Job account using AI agents
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
email | string | Yes | User email address |
countryCode | string | Yes | Country code (e.g., +1, +91) |
phoneNumber | string | Yes | Phone number |
education | array | Yes | Education history |
profileSummary | string | Yes | Professional summary |
jobHistory | array | No | Work experience (required if no projects) |
projects | array | No | Projects (required if no job history) |
Response
{
"success": "boolean",
"message": "string (verification email sent)"
}POST
/registerRegister AI Session
Create a new AI session token for API access (requires existing account)
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | Your Pulse Job user ID |
agentType | string | No | AI agent type (chatgpt, claude, gemini, etc.) |
scopes | array | No | Permission scopes (jobs.read, jobs.apply) |
Response
{
"token": "string (JWT session token)",
"sessionId": "string (session UUID)",
"expiresIn": "number (seconds until expiration)"
}GET
/sessionsList Active Sessions
Get all active AI sessions for the authenticated user
Response
{
"sessions": "array (active session objects)"
}POST
/sessions/:id/revokeRevoke Session
Revoke a specific AI session
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string (path) | Yes | Session ID to revoke |
Response
{
"success": "boolean"
}POST
/revoke-allRevoke All Sessions
Revoke all AI sessions for the authenticated user
Response
{
"success": "boolean"
}GET
/trust-scoreGet Trust Score
Get current AI trust score for the authenticated user
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
recalculate | boolean (query) | No | Force recalculation of trust score |
Response
{
"score": "number (0-100)",
"level": "string (critical, low, medium, high, excellent)"
}GET
/jobs/searchSearch Jobs
Search for jobs with AI-optimized filters
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
q | string (query) | No | Search query |
location | string (query) | No | Location filter |
limit | number (query) | No | Results limit (max 50) |
offset | number (query) | No | Results offset |
Response
{
"jobs": "array (job objects)",
"pagination": "object (pagination metadata)"
}POST
/jobs/:id/applyApply to Job
Submit an application to a job with safety checks
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string (path) | Yes | Job ID |
matchScore | number (body) | No | AI-calculated match score (0-100) |
coverLetter | string (body) | No | AI-generated cover letter |
Response
{
"success": "boolean",
"queueId": "string (queue item ID)",
"message": "string (status message)"
}GET
/profileGet User Profile
Get user profile data for AI consumption
Response
{
"id": "string",
"name": "string",
"summary": "string",
"skills": "string",
"experience": "string",
"education": "string",
"preferences": "object",
"hasResume": "boolean",
"trustScore": "number",
"emailVerified": "boolean"
}GET
/saved-jobsGet Saved Jobs
Get list of jobs saved by the user
Response
{
"jobs": "array (saved job objects)",
"total": "number"
}GET
/applicationsGet Applied Jobs
Get list of jobs the user has applied to
Response
{
"applications": "array (application objects)",
"total": "number"
}Error Codes
| Code | Description |
|---|---|
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid or expired token |
403 | Forbidden - Insufficient trust score or permissions |
404 | Not Found - Resource not found |
429 | Too Many Requests - Rate limit exceeded |
500 | Internal Server Error |
Rate Limits
Rate limits are based on your trust score and session configuration:
- Excellent (90-100): 1000 requests/day, 50 applications/session
- High (70-89): 500 requests/day, 25 applications/session
- Medium (50-69): 100 requests/day, 10 applications/session
- Low (30-49): 25 requests/day, 3 applications/session
- Critical (0-29): 10 requests/day, 0 applications (read-only)