Skip to main content

GigRadar Public API key: Error 131: "Error while selecting duration" — Bid Payload Type Mismatch

API, error 131, error while selecting duration, bid payload, fixed price, hourly, opportunities

Written by Vadym O

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: 131

  • Error 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

event.data.job.budget.type

Job Type

Required bid.type

1

Fixed Price

"fixed"

2

Hourly Rate

"hourly"

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.

Did this answer your question?