If your API call returns error code 131 with the message "Error while selecting duration," your bid payload is using the wrong budget type for the job. This is the inverse of Error 128 — it occurs when submitting a fixed-price bid on an hourly rate job.
Symptoms
API responds with
errorCode: 131Error message:
"Error while selecting duration"Bid submission fails
Cause
Upwork jobs are either Fixed Price or Hourly Rate. The bid.type in your payload must match the job's budget type exactly. Sending "type": "fixed" for an hourly job triggers this error.
Solution
Step 1: Check the job's budget type
Before submitting a bid, verify the job's budget type. You can do this:
Via webhook event
Listen to the GIGRADAR.OPPORTUNITY.CREATE event and check:
json
"event.data.job.budget.type": 1 // Fixed Price "event.data.job.budget.type": 2 // Hourly Rate
Step 2: Match your bid payload to the job type
❌ Wrong — Fixed Price payload on an Hourly Rate job:
json
{ "coverLetter": "...",
"bid": {
"type": "fixed",
"amount": 1500
},
"scheduledAt": "{{scheduledAt}}"
}✅ Correct — Hourly payload:
json
{ "coverLetter": "...",
"bid": {
"type": "hourly",
"amount": 75
},
"scheduledAt": "{{scheduledAt}}"
}Quick Reference
| Job Type | Required |
| Fixed Price |
|
| Hourly Rate |
|
Prevention
Always read the job's budget type from the webhook payload before constructing your bid. Dynamically set bid.type based on event.data.job.budget.type rather than hardcoding it.
Still getting the error?
Verify the amount field is appropriate — hourly bids should reflect your hourly rate, not a total project cost.
If the issue persists, contact GigRadar support with the opportunityId and the full payload you're sending.
