Partner Integration
JuniorForge Partner API
The JuniorForge Partner API gives approved partners read-only access to AI annotation task submissions completed by JuniorForge contributors on their behalf.
Base URL
https://juniorforge.onrender.com/api
Auth
API Key (Bearer)
Format
JSON / CSV
Scoping: Your API key automatically scopes every request to your partner account. You can only access tasks and submissions that belong to your organisation. Talent PII (names, emails, location) is never exposed.
Authentication
Authenticate all requests by passing your API key in the Authorization header.
Alternatively you can use the X-API-Key header:
Key security: Never expose your API key in client-side code or public repositories. Use environment variables or a secrets manager. Keys cannot be recovered if lost — contact JuniorForge to rotate.
Rate Limits
Rate limits are applied per API key. Default limits are shown below. Contact JuniorForge if your integration requires higher limits.
60
Requests per minute
Across all endpoints
5,000
Requests per day
Rolling 24-hour window
When rate limited, the API returns HTTP 429. Implement exponential backoff and use the ?since= parameter on submission endpoints to reduce request volume.
Endpoints
All endpoints are read-only. The base path for all partner endpoints is /partner.
/api/partner/mePartner Account Info
Verify your API key is valid and inspect which permissions have been granted to your account.
Example response:
/api/partner/tasksList Partner Tasks
Returns all tasks belonging to your partner account, including submission statistics per task.
Parameters
statusFilter by task status. One of: active, paused, completed, draft.
pagePage number. Default: 1.
limitResults per page. Max 100. Default: 50.
Example response:
/api/partner/submissionsAll Submissions (Bulk)
Pull submissions across all of your tasks in one request. Use the `since` parameter for incremental syncs — we strongly recommend this over full pulls.
Parameters
statusFilter by review status. One of: approved (default), pending_review, rejected, all.
sinceISO 8601 datetime. Returns only submissions submitted after this date. Highly recommended for sync jobs.
pagePage number. Default: 1.
limitResults per page. Max 100. Default: 50.
includeResponsesSet to false to retrieve metadata only (no work content). Default: true.
Example response:
/api/partner/tasks/:taskId/submissionsSubmissions for a Task
Pull all submissions for a single specific task. Useful when you process results per task batch.
Parameters
taskId*The MongoDB ID of the task. Obtain this from the List Tasks endpoint.
statusFilter by review status. Default: approved.
sinceISO 8601 datetime for incremental pulls.
pagePage number. Default: 1.
limitResults per page. Max 100.
includeResponsesInclude response payload. Default: true.
Example response:
/api/partner/submissions/:submissionIdGet Single Submission
Retrieve a single submission by its ID. Useful for spot-checking or retry logic.
Parameters
submissionId*The MongoDB ID of the submission.
Example response:
/api/partner/tasks/:taskId/export/csvExport Submissions as CSV
Download all submissions for a task as a CSV file. Each submission response field becomes its own column — ideal for loading directly into your annotation pipelines or spreadsheet tools.
Parameters
taskId*The MongoDB ID of the task.
statusFilter by status. Default: approved.
sinceISO 8601 date for incremental export.
The response is a text/csv file with Content-Disposition: attachment. Each response field in the submission form becomes a separate column:
Webhooks
If your API key has webhook access enabled, JuniorForge will POST a signed JSON payload to your configured endpoint whenever a submission event occurs. This eliminates the need to poll the submissions endpoint.
Supported Events
submission.approvedFired when a submission is approved by a JuniorForge reviewer. This is the primary event for pulling work product.
submission.rejectedFired when a submission is rejected. No work product is included.
task.completedFired when all submission slots for a task have been filled and reviewed.
Payload Shape
Signature Verification
Every webhook request includes an X-JuniorForge-Signature header containing sha256=<HMAC>. Always verify this before processing the payload.
Reliability: JuniorForge makes one delivery attempt per event with a 10-second timeout. If delivery fails, the submission remains accessible via the REST API. We recommend implementing a fallback polling job alongside webhook consumption.
Data Schemas
Submission Object
submissionIdstringMongoDB ObjectId. Unique identifier for this submission.
externalTaskIdstring?Your own task reference ID, set when the task was created in JuniorForge admin.
taskTitlestringHuman-readable name of the task.
submissionIndexintegerWhich submission this is for this talent on this task (starts at 1).
submittedAtISO 8601When the talent submitted their work.
reviewedAtISO 8601When a JuniorForge reviewer approved or rejected it.
reviewStatusenumapproved | pending_review | rejected | flagged
qualityScoreinteger?0–100 quality score assigned by the reviewer.
timeTakenSecondsinteger?Time the talent spent on the submission (measured client-side).
talent.tierintegerJuniorForge talent tier. 1 = top tier, 2 = mid tier.
talent.preferredRolestring?Only present if readTalentProfile permission is granted.
responsesarray?Array of { fieldName, value } objects. Each entry is one form field. Only present if readSubmissionResponses is granted.
Error Codes
401 INVALID_KEYThe API key is missing, malformed, or has been revoked.
401 KEY_EXPIREDThe API key has passed its expiry date. Contact JuniorForge to renew.
403 PERMISSION_DENIEDYour key doesn't have the required permission for this endpoint.
403 TASK_NOT_YOURSThe requested task does not belong to your partner account.
403 SUBMISSION_NOT_YOURSThe requested submission is not for one of your tasks.
404The requested resource was not found.
429Rate limit exceeded. Back off and retry with exponential delay.
500Internal server error. Retry after a short delay. Contact support if persistent.
Error Response Shape
Code Examples
Verify Access
Incremental Sync (Recommended)
Submissions for a Specific Task
Download CSV Export
Questions about the API? Contact your JuniorForge account manager or email contact@juniorforge.com
JuniorForge Partner API · v1 · 2026