Basic Pagination
quick-start.ts
Manual paging
Async iteration
Next page as a new instance
Error handling and rate limits
For detailed code examples using the Javascript/TypeScript XDK, check out our code samples GitHub repo.
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
The SDK provides generic paginator utilities you can use with any endpoint that returns paginated responses. Methods return plain responses; you wrap th…
import { Client, UserPaginator, PaginatedResponse, Schemas } from '@xdevplatform/xdk';
const client: Client = new Client({ bearerToken: 'your-bearer-token' });
// Wrap any list endpoint with proper typing
const followers: UserPaginator = new UserPaginator(
async (token?: string): Promise<PaginatedResponse<Schemas.User>> => {
const res = await client.users.getFollowers('<userId>', {
maxResults: 100,
paginationToken: token,
userFields: ['id','name','username'],
});
return {
data: res.data ?? [],
meta: res.meta,
includes: res.includes,
errors: res.errors
};
}
);
import { UserPaginator, Schemas } from '@xdevplatform/xdk';
await followers.fetchNext(); // first page
while (!followers.done) {
await followers.fetchNext(); // subsequent pages
}
const userCount: number = followers.users.length; // all fetched users
const firstUser: Schemas.User | undefined = followers.users[0];
const nextToken: string | undefined = followers.meta?.nextToken;
import { Schemas } from '@xdevplatform/xdk';
for await (const user of followers) {
const typedUser: Schemas.User = user;
console.log(typedUser.username); // fully typed access
}
import { UserPaginator } from '@xdevplatform/xdk';
await followers.fetchNext();
if (!followers.done) {
const page2: UserPaginator = await followers.next(); // independent paginator starting at next page
await page2.fetchNext();
console.log(page2.users.length); // items from second page
}
import { UserPaginator, Schemas } from '@xdevplatform/xdk';
try {
for await (const item of followers) {
const user: Schemas.User = item;
// process user...
}
} catch (err: unknown) {
if (followers.rateLimited) {
console.error('Rate limited, backoff required');
// backoff / retry later
} else {
console.error('Pagination error:', err);
throw err;
}
}