API
AI Job Trackers
Create and manage AI Job Trackers that monitor job postings and feed your pipeline.
Trackers monitor AI Job Tracker URLs and automatically import matching jobs into your GigUp pipeline. Manage your trackers programmatically to scale your job discovery.
The Tracker Object
{
"id": 42,
"name": "Laravel SaaS Jobs",
"url": "https://www.upwork.com/nx/search/jobs/?q=laravel%20saas\u0026sort=recency",
"ai_prompt": "Only include strong Laravel SaaS opportunities.",
"ai_match_percentage": 75,
"profile_user_id": 7,
"owner_user_id": 1,
"team_id": 5,
"is_active": true,
"created_at": "2024-01-01T12:00:00.000000Z"
}
Attributes
| Attribute | Type | Description |
|---|---|---|
id | integer | Unique tracker identifier |
name | string | Tracker name |
url | string | AI Job Tracker URL |
ai_prompt | string|null | Optional AI matching instructions |
ai_match_percentage | integer | Minimum AI relevance score (0-100) |
profile_user_id | integer|null | Profile user used for AI matching |
owner_user_id | integer|null | User who owns the tracker assignment |
team_id | integer|null | Team that owns the tracker assignment |
is_active | boolean | Whether the tracker is running |
created_at | string (ISO 8601) | Creation timestamp |
List Trackers
Retrieve AI Job Trackers for the authenticated user's current team. Results are paginated with 10 trackers per page.
GET /api/v1/trackers
Example Request:
curl -X GET "https://giguphq.com/api/v1/trackers" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Example Response:
{
"data": [
{
"id": 42,
"name": "Laravel SaaS Jobs",
"url": "https://www.upwork.com/nx/search/jobs/?q=laravel%20saas\u0026sort=recency",
"ai_prompt": "Only include strong Laravel SaaS opportunities.",
"ai_match_percentage": 75,
"profile_user_id": 7,
"owner_user_id": 1,
"team_id": 5,
"is_active": true,
"created_at": "2024-01-01T12:00:00.000000Z"
}
],
"current_page": 1,
"current_page_url": "https://giguphq.com/api/v1/trackers?page=1",
"first_page_url": "https://giguphq.com/api/v1/trackers?page=1",
"from": 1,
"next_page_url": null,
"path": "https://giguphq.com/api/v1/trackers",
"per_page": 10,
"prev_page_url": null,
"to": 2
}
Create a Tracker
Create a new tracker to monitor an AI Job Tracker URL. Requires write permission.
POST /api/v1/trackers
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Tracker name (max 255 characters) |
url | string | Yes | Valid AI Job Tracker URL |
ai_match_percentage | integer | No | Minimum AI score threshold (0-100, default: 50) |
Example Request:
curl -X POST "https://giguphq.com/api/v1/trackers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Senior Python Backend Jobs",
"url": "https://www.upwork.com/nx/search/jobs/?q=python%20backend\u0026contractor_tier=2,3",
"ai_match_percentage": 70
}'
Example Response:
{
"data": {
"id": 44,
"name": "Senior Python Backend Jobs",
"url": "https://www.upwork.com/nx/search/jobs/?q=python%20backend\u0026contractor_tier=2,3",
"ai_prompt": null,
"ai_match_percentage": 70,
"profile_user_id": 7,
"owner_user_id": 1,
"team_id": 5,
"is_active": true,
"created_at": "2024-01-15T10:00:00.000000Z"
}
}
URL Requirements
The URL must be a valid AI Job Tracker URL. Supported parameters:
| Parameter | Description |
|---|---|
q | Search query |
contractor_tier | Freelancer level (1=Entry, 2=Intermediate, 3=Expert) |
hourly_rate | Hourly rate range |
duration | Job duration |
workload | Workload (full-time, part-time) |
client_hires | Client hire history |
proposals | Proposal range |
sort | Sort order (recency, relevance) |
⚠️ Warning: The URL must include sort=recency for optimal results. Trackers without this may miss new postings.
Update a Tracker
Modify an existing tracker. Requires write permission.
PATCH /api/v1/trackers/{tracker}
Example Request:
curl -X PATCH "https://giguphq.com/api/v1/trackers/44" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Senior Python \u0026 Django Backend Jobs",
"ai_match_percentage": 80,
"is_active": true
}'
Delete a Tracker
Permanently remove a tracker and stop monitoring. Requires write permission.
DELETE /api/v1/trackers/{tracker}
curl -X DELETE "https://giguphq.com/api/v1/trackers/44" \
-H "Authorization: Bearer YOUR_API_TOKEN"
HTTP/1.1 204 No Content
AI Match Percentage
The ai_match_percentage controls the quality threshold for jobs imported by the tracker:
| Threshold | Description | Use Case |
|---|---|---|
90-100 | Only exceptional matches | Highly specialized skills |
75-89 | Strong matches | Focused job search |
60-74 | Good matches | Balanced discovery |
50-59 | Moderate matches | Broad exploration |
0-49 | All matches | Maximum volume |
💡 Tip: Start with 70-75% for new trackers. Adjust based on the quality of jobs you're seeing. Higher thresholds = fewer but better jobs.
Error Responses
422 Validation Error:
{
"message": "The url field must be a valid AI Job Tracker URL.",
"errors": {
"url": ["The url field must be a valid AI Job Tracker URL."]
}
}
404 Not Found:
{
"message": "Resource not found."
}
Use Cases
Weekly Performance Report: Generate a weekly email report showing which trackers are performing best:
import requests
from datetime import datetime
def generate_tracker_report(api_token):
headers = {"Authorization": f"Bearer {api_token}"}
response = requests.get(
"https://giguphq.com/api/v1/trackers",
headers=headers
)
trackers = response.json()["data"]
report = f"📊 Tracker Performance Report — {datetime.now().strftime('%B %d, %Y')}\n\n"
for tracker in trackers:
status = "🟢 Active" if tracker["is_active"] else "🔴 Paused"
report += f"*{tracker['name']}* {status}\n"
report += f"├ AI threshold: {tracker['ai_match_percentage']}%\n"
report += f"└ Profile user: {tracker['profile_user_id']}\n\n"
return report