API
API Docs
Get started with the GigUp API. Learn about base URLs, authentication, permissions, and available resources.
The GigUp API gives you programmatic access to your job pipeline. Build integrations, automate workflows, and sync job data with your existing tools.
When to Use the API
| Use the API when | Use MCP when |
|---|---|
| You are building a direct integration, automation, or data sync. | You want an AI agent to understand GigUp docs and help plan the work. |
| Your app needs to read or update jobs, trackers, profile data, or proposal templates. | Your workflow needs guided setup, docs discovery, or implementation planning. |
Using AI Agents
If you want Codex, Cursor, OpenCode, or another MCP-capable agent to work with GigUp, use the hosted MCP endpoint instead of hand-writing API requests. The agent connects to https://giguphq.com/mcp, sends your GigUp API token as a bearer token, and then discovers the tools it can use.
For copy-paste setup snippets, see Connecting Agents.
Base URL
All API requests are made to:
https://giguphq.com/api/v1
Authentication
Every request must include a valid API token in the Authorization header:
Authorization: Bearer {your_api_token}
Accept: application/json
Generate tokens from Developer Tools. Tokens are shown only once at creation. Store them securely.
Permissions
Tokens are scoped with one or both permissions:
| Permission | Access |
|---|---|
read |
Read-only endpoints (GET) |
write |
All endpoints including mutations (POST, PATCH, DELETE) |
Read endpoints accept either read or write tokens. Write endpoints require write.
HTTP Status Codes
| Code | Meaning |
|---|---|
200 OK | Request succeeded |
201 Created | Resource created successfully |
204 No Content | Resource deleted successfully |
400 Bad Request | Invalid request parameters |
401 Unauthorized | Missing or invalid API token |
403 Forbidden | Token lacks required permission |
404 Not Found | Resource does not exist |
422 Unprocessable Entity | Validation failed |
429 Too Many Requests | Rate limit exceeded |
500 Internal Server Error | Server error |
All error responses are JSON. Missing API resources return the same simple 404 body across endpoints:
{
"message": "Resource not found."
}
Rate Limiting
API requests are rate limited to 100 requests per minute per token. Rate limit headers are included in every response:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1704067200
Response Format
All responses are JSON with a consistent structure:
{
"data": { ... },
"current_page": 1,
"current_page_url": "https://giguphq.com/api/v1/jobs?page=1",
"first_page_url": "https://giguphq.com/api/v1/jobs?page=1",
"from": 1,
"next_page_url": "https://giguphq.com/api/v1/jobs?page=2",
"path": "https://giguphq.com/api/v1/jobs",
"per_page": 10,
"prev_page_url": null,
"to": 10
}
Single resource responses return the resource directly under data.
Paginated endpoints use Laravel simplePaginate(10) and return the paginator fields at the top level. Use page to move through results; custom page sizes are not supported. Simple pagination returns previous and next page URLs, but not total result counts or last-page numbers.
Available Resources
| Resource | Description |
|---|---|
| Authentication | Create and manage API tokens |
| Jobs | Browse, filter, and update tracked jobs |
| AI Job Trackers | Manage AI Job Trackers |
| AI Proposal Templates | Create reusable proposal generation prompts |
SDKs & Tools
While we don't provide official SDKs yet, you can use standard HTTP clients:
cURL
curl -X GET "https://giguphq.com/api/v1/jobs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
Python
import requests
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Accept": "application/json"
}
response = requests.get("https://giguphq.com/api/v1/jobs", headers=headers)
jobs = response.json()
JavaScript
const response = await fetch('https://giguphq.com/api/v1/jobs', {
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Accept': 'application/json'
}
});
const data = await response.json();
Support
Questions or issues? Reach out to [email protected].