I am using the https://{youraccountname}.api-us1.com/api/3/deals call to retrieve all Deals and I am pretty sure the # of deals it returned matched what was in the application at one point but now I it is not returning about 10% of the deal records.
I don’t see any pattern among the missing deals. I tried to see if the API would return the records if I used the group (pipeline) filter and the records were still missing.
I am able to retrieve the Deal if I use Postman and supply the Id however.
Thank you
Hi Andrea! This issue can have several causes. Here’s how I would troubleshoot:
1. Pagination Limits The API has a default limit of 20 records per request (max 100). If you’re not paginating through all results, you’ll miss records.
Solution:
- Use the
limit
parameter (max 100): ?limit=100
- Implement pagination using the
offset
parameter
- Continue requesting until you get fewer records than your limit
Example:
GET /api/3/deals?limit=100&offset=0
GET /api/3/deals?limit=100&offset=100
GET /api/3/deals?limit=100&offset=200
2. Deal Status/Stage Filtering The API might be filtering out deals in certain stages by default.
Solution:
- Try adding
filters[stage]=0
to include all stages
- Or explicitly specify which stages to include:
filters[stage][]=1&filters[stage][]=2
3. Permission/User Access Issues Your API user might not have access to all deals (especially if deals are assigned to different users/groups).
Solution:
- Check if the missing deals are assigned to different users
- Ensure your API credentials have admin-level access
- Try filtering by specific users:
filters[owner]=USER_ID
4. Date Range Limitations Some API endpoints have implicit date filtering.
Solution:
- Add explicit date filters to ensure you’re getting all records:
filters[created_after]=2020-01-01T00:00:00-00:00
filters[created_before]=2025-12-31T23:59:59-00:00
If I were you I would,
- Check your current request parameters - what filters/limits are you using?
- Compare total counts:
GET /api/3/deals?limit=1
Look at the meta.total
field in the response
3. Test with a minimal request:
GET /api/3/deals?limit=100&filters[stage]=0
- Verify the missing deals’ properties - check their stage, owner, creation date, etc. in the UI to identify patterns
Since you can retrieve individual deals by ID via Postman, the records exist and your API access works - this strongly suggests a filtering/pagination issue rather than a permissions problem.
Thank you for your quick response. I don’ think any of these items are the issue but I will try.
Do you know what edate means on the deal? Three of the deals I am missing (from the List all deals pull) have an edate >=2025-06-09 (today).
The deals themselves where created back in 2023.
Thanks again
I added an order by clause and now I am getting all the records. I also added stage = 0 just in case. Thank you for your help!
This is great to hear, Andrea!
I’m so happy you were able to figure it out!
Always happy to try and help/brainstorm ideas 