Vibeworker REST API v1. Query your scored job feed, search jobs, manage webhooks, and generate proposal context programmatically.
All endpoints except the RSS feed require a vw_ API key passed as a Bearer token. Generate keys in Settings → API.
Authorization: Bearer vw_your_api_key_here
All endpoints return { data: ... } on success or { error: '...' } with an appropriate HTTP status on failure.
https://tryvibeworker.com/api/v1/jobsReturns your ranked job feed, sorted and filtered by the specified parameters. Jobs are scored against your profile using vector similarity.
Parameters
limitintegerNumber of jobs to return. Default 20, max 50.sortstringSort order: match (default), newest, budget, quick_win.jobTypestringFilter by job type: Fixed or Hourly.minBudgetintegerMinimum budget in USD. Default 0.minScorefloatMinimum match score (0–1). e.g. 0.7 for 70%+ matches only.categoriesstringComma-separated category names to filter by.Response
{
"data": [
{
"id": "~01234abcdef",
"title": "Build a Next.js dashboard",
"category": "Web Development",
"jobType": "Fixed",
"budget": 500,
"budgetMax": 800,
"experienceLevel": "Intermediate",
"skills": ["Next.js", "TypeScript", "Tailwind"],
"upworkUrl": "https://www.upwork.com/jobs/~01234abcdef",
"receivedAt": "2026-04-23T10:00:00Z",
"similarity": 0.87,
"percentile": 94,
"scoreQuickWin": 8,
"simSkills": 92,
"simScope": 88,
"simClient": 76,
"simRisks": 81,
"status": "new"
}
]
}https://tryvibeworker.com/api/v1/jobs/:idReturns a single job by ID with full details including all scores, client history, and your personal similarity breakdown.
Parameters
idstring · requiredThe Upwork job ID (e.g. ~01234abcdef).Response
{
"data": {
"id": "~01234abcdef",
"title": "Build a Next.js dashboard",
"description": "Full job description text...",
"client": {
"location": "United States",
"jobsPosted": 24,
"hireRate": 78,
"totalSpent": 45000,
"paymentVerified": true,
"rating": 4.9,
"avgRate": 62
},
"scores": {
"quickWin": 8,
"scopeClarity": 9,
"redFlags": 9,
"effortHours": 12,
"reasoning": "Clear deliverable, verified client...",
"match": 0.87,
"simSkills": 0.92,
"simScope": 0.88,
"simClient": 0.76,
"simRisks": 0.19
}
}
}https://tryvibeworker.com/api/v1/searchFull-text keyword search across job titles and descriptions. Returns jobs from the last 48 hours matching the query.
Parameters
qstring · requiredSearch query. Matches against job title and description.limitintegerNumber of results. Default 20, max 50.Response
{
"data": [
{
"id": "~01234abcdef",
"title": "Build a React dashboard",
"category": "Web Development",
"jobType": "Fixed",
"budget": 500,
"skills": ["React", "TypeScript"],
"upworkUrl": "https://www.upwork.com/jobs/~01234abcdef",
"receivedAt": "2026-04-23T10:00:00Z",
"scores": { "quickWin": 7, "redFlags": 9 }
}
]
}https://tryvibeworker.com/api/v1/profileReturns your Vibeworker profile — the text used for job matching, your subscribed categories, and your active scoring mode.
Response
{
"data": {
"profileText": "Senior React / Next.js developer...",
"subscribedCategories": ["Web Development", "Mobile Development"],
"scoringMode": "digest"
}
}https://tryvibeworker.com/api/v1/proposal-context/:idReturns everything an AI needs to draft a proposal for a specific job: the full job data, your profile, and a system prompt with instructions. Pass the response directly to any LLM.
Parameters
idstring · requiredThe Upwork job ID.Response
{
"data": {
"job": { /* full job object with client history and scores */ },
"profile": {
"profileText": "Senior React developer...",
"subscribedCategories": ["Web Development"],
"scoringMode": "digest"
},
"instructions": "Using the job and profile above, draft a personalized Upwork proposal..."
}
}Webhooks deliver matched jobs to your endpoint in real time. Every request is signed with HMAC-SHA256 using your webhook secret — verify the X-Vibeworker-Signature header before processing.
// Verify signature (Node.js)
const sig = createHmac('sha256', webhookSecret)
.update(rawBody)
.digest('hex');
if (sig !== req.headers['x-vibeworker-signature'].replace('sha256=', '')) {
return res.status(401).end();
}https://tryvibeworker.com/api/v1/webhooksList all webhooks for your account.
Response
{
"data": [
{
"id": "uuid",
"name": "n8n jobs",
"url": "https://your-endpoint.com/hook",
"scoreThreshold": 0.7,
"events": ["job.matched"],
"lastFiredAt": "2026-04-23T10:00:00Z",
"lastStatusCode": 200
}
]
}https://tryvibeworker.com/api/v1/webhooksCreate a new webhook. Vibeworker will POST to your URL whenever a job exceeds the score threshold.
Parameters
urlstring · requiredHTTPS endpoint to deliver payloads to.namestringLabel for this webhook. Default: "My Webhook".scoreThresholdfloatMinimum match score (0–1) to trigger delivery. Default: 0.7.eventsstring[]Event types to subscribe to. Currently only job.matched.Response
{
"data": {
"id": "uuid",
"name": "n8n jobs",
"url": "https://your-endpoint.com/hook",
"secret": "whsec_...",
"scoreThreshold": 0.7,
"events": ["job.matched"]
}
}https://tryvibeworker.com/api/v1/webhooks/:idDelete a webhook by ID.
Parameters
idstring · requiredWebhook ID.Response
{ "data": { "deleted": true } }https://tryvibeworker.com/api/v1/webhooks/:id/testSend a test payload to the webhook URL and return the response status. Useful for verifying your endpoint is reachable and signature verification works.
Parameters
idstring · requiredWebhook ID.Response
{
"data": {
"statusCode": 200,
"success": true,
"response": "ok"
}
}The RSS feed uses query-parameter authentication instead of Bearer tokens, so it works directly in any RSS reader.
https://tryvibeworker.com/api/v1/feed.xmlReturns your ranked job feed as RSS 2.0 XML. Compatible with every RSS reader. Each item includes match score, budget, quick-win score, and description snippet.
Parameters
keystring · requiredYour vw_ API key. Generate a dedicated RSS key in Settings → API.limitintegerNumber of jobs to include. Default 50, max 100.minScorefloatOnly include jobs above this match score. e.g. 0.7 for high-signal-only feed.