Very simple TwitchApi
class and TypeScript interfaces for all Twitch API endpoints
- Auto-generated from twitch-api-swagger
- Uses
fetch
under the hood - Includes types for all endpoints
- Request Query Parameters
- Request Body
- Response Body
- Includes descriptions for the fields
npm i ts-twitch-api
pnpm i ts-twitch-api
yarn add ts-twitch-api
import type {
UpdateAutoModSettingsParams,
UpdateAutoModSettingsBody,
UpdateAutoModSettingsResponse,
} from 'ts-twitch-api';
const updateAutoModSettings = async (
params: UpdateAutoModSettingsParams,
body: UpdateAutoModSettingsBody,
) => {
const searchParams = new URLSearchParams(params);
const url = `https://api.twitch.tv/helix/moderation/automod/settings?${searchParams}`;
const response = await fetch(url, {
method: 'PUT',
body: JSON.stringify(body),
headers: {
Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,
'Client-Id': process.env.CLIENT_ID,
'Content-Type': 'application/json',
},
});
return response.json() as Promise<UpdateAutoModSettingsResponse>;
}
import { TwitchApi } from 'ts-twitch-api';
const twitchApi = new TwitchApi({
accessToken: process.env.ACCESS_TOKEN,
clientId: process.env.CLIENT_ID,
});
const response = await twitchApi.chat.updateChatSettings(
// query params
{ broadcaster_id: '1', moderator_id: '2' },
// body
{ emote_mode: true },
);
if (response.ok) {
console.log(response.data);
} else {
console.error(response.status);
}
const streams = await twitchApi.streams.getStreams(
// some endpoints accept multiple ids like this: `id=1234&id=5678`
{ user_id: ['1', '2'] },
// override accessToken and/or clientId for different requests
{
accessToken: '<accessToken>',
clientId: '<clientId>'
},
);
if (streams.ok) {
console.log(streams.data);
}
// pass fetch options via RequestInit object
const ac = new AbortController();
const users = twitchApi.users.getUsers(
{ id: ['1', '2'] },
{ requestInit: { signal: ac.signal } },
);
ac.abort();