GigUp Docs

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

AttributeTypeDescription
idintegerUnique tracker identifier
namestringTracker name
urlstringAI Job Tracker URL
ai_promptstring|nullOptional AI matching instructions
ai_match_percentageintegerMinimum AI relevance score (0-100)
profile_user_idinteger|nullProfile user used for AI matching
owner_user_idinteger|nullUser who owns the tracker assignment
team_idinteger|nullTeam that owns the tracker assignment
is_activebooleanWhether the tracker is running
created_atstring (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

FieldTypeRequiredDescription
namestringYesTracker name (max 255 characters)
urlstringYesValid AI Job Tracker URL
ai_match_percentageintegerNoMinimum 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:

ParameterDescription
qSearch query
contractor_tierFreelancer level (1=Entry, 2=Intermediate, 3=Expert)
hourly_rateHourly rate range
durationJob duration
workloadWorkload (full-time, part-time)
client_hiresClient hire history
proposalsProposal range
sortSort 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:

ThresholdDescriptionUse Case
90-100Only exceptional matchesHighly specialized skills
75-89Strong matchesFocused job search
60-74Good matchesBalanced discovery
50-59Moderate matchesBroad exploration
0-49All matchesMaximum 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