Pagination
Handling paginated responses across all SDKs.
Overview
List endpoints return paginated results:
json
{
"data": [...],
"pagination": {
"page": 1,
"perPage": 20,
"total": 150,
"totalPages": 8
}
}TypeScript/JavaScript
Manual Pagination
typescript
// First page
const page1 = await iof.contracts.list({ limit: 20 });
// Next page
const page2 = await iof.contracts.list({
limit: 20,
page: 2,
});Auto-pagination
typescript
// Iterate all results
for await (const contract of iof.contracts.list({ limit: 100 })) {
console.log(contract.id);
}
// Collect all results
const allContracts = await iof.contracts.list({ limit: 100 }).toArray();Python
Manual Pagination
python
# First page
page1 = iof.contracts.list(limit=20)
# Next page
page2 = iof.contracts.list(limit=20, page=2)Auto-pagination
python
# Iterate all results
for contract in iof.contracts.list(limit=100).auto_paging_iter():
print(contract.id)
# Collect all results
all_contracts = list(iof.contracts.list(limit=100).auto_paging_iter())Go
Manual Pagination
go
params := &iof.ContractListParams{
Limit: iof.Int64(20),
}
iter := client.Contracts.List(params)
for iter.Next() {
contract := iter.Contract()
fmt.Println(contract.ID)
}Cursor-based
go
var cursor *string
for {
params := &iof.ContractListParams{
Limit: iof.Int64(100),
Cursor: cursor,
}
result, err := client.Contracts.List(params)
if err != nil {
break
}
for _, contract := range result.Data {
fmt.Println(contract.ID)
}
if !result.HasMore {
break
}
cursor = result.NextCursor
}Java
Manual Pagination
java
ContractListParams params = ContractListParams.builder()
.limit(20L)
.build();
ContractCollection page1 = client.contracts().list(params);
// Next page
ContractListParams nextParams = ContractListParams.builder()
.limit(20L)
.page(2L)
.build();
ContractCollection page2 = client.contracts().list(nextParams);Auto-pagination
java
ContractListParams params = ContractListParams.builder()
.limit(100L)
.build();
client.contracts().list(params).autoPagingIterable().forEach(contract -> {
System.out.println(contract.getId());
});Pagination Parameters
| Parameter | Description | Default |
|---|---|---|
limit | Results per page | 20 |
page | Page number | 1 |
cursor | Cursor for next page | null |
Best Practices
- Use reasonable limits - 20-100 items per page
- Prefer cursors - For large datasets
- Handle empty pages - Check if data exists
- Avoid deep pagination - Use filters instead
Next Steps
- Error Handling - Handle errors
- Webhooks - Real-time events