Transport And Errors
Error Classes
Section titled “Error Classes”The SDK exports these error classes:
TipplyErrorTipplyHttpErrorTipplyAuthenticationErrorTipplyResponseValidationErrorTipplyConfigurationErrorTipplyAuthErrorTipplyValidationError
All errors derived from TipplyError include:
codemethodurlstatusheadersbody
Typical Handling Pattern
Section titled “Typical Handling Pattern”import { TipplyAuthenticationError, TipplyConfigurationError, createTipplyClient,} from "tipply-sdk-ts";
try { const client = createTipplyClient({ authCookie: process.env.TIPPLY_AUTH_COOKIE!, });
await client.me.get();} catch (error) { if (error instanceof TipplyAuthenticationError) { console.error("The Tipply session is missing or expired."); throw error; }
if (error instanceof TipplyConfigurationError) { console.error("The client configuration is inconsistent."); throw error; }
throw error;}TipplyClientOptions
Section titled “TipplyClientOptions”type TipplyClientOptions = { session?: TipplySessionOptions; transport?: TipplyTransportOptions; auth?: TipplyAuthLifecycleOptions; validation?: boolean; authCookie?: string; getAuthCookie?: () => string | Promise<string | null | undefined> | null | undefined; cookieName?: string; includeCredentials?: boolean; appOrigin?: string; fetch?: typeof fetch; proxyBaseUrl?: string; publicBaseUrl?: string; validateResponses?: boolean;};TipplySessionOptions
Section titled “TipplySessionOptions”type TipplySessionOptions = | { authCookie: string } | { getAuthCookie: () => string | Promise<string | null | undefined> | null | undefined } | { browserSession: true };TipplyAuthLifecycleOptions
Section titled “TipplyAuthLifecycleOptions”type TipplyAuthLifecycleOptions = { refreshTokenOnRequests?: boolean; refreshTokenEvery?: boolean | { intervalMs?: number }; reconnectTries?: number | false;};Default behavior:
refreshTokenOnRequests:truerefreshTokenEvery:falserefreshTokenEvery: true: refreshes through/userevery300000msreconnectTries:3
TipplyTransportOptions
Section titled “TipplyTransportOptions”type TipplyTransportOptions = { fetch?: typeof fetch; proxyBaseUrl?: string; publicBaseUrl?: string; alertSocketBaseUrl?: string; commandsSocketBaseUrl?: string; appOrigin?: string; cookieName?: string; includeCredentials?: boolean; timeoutMs?: number;};Default endpoints:
proxyBaseUrl:https://proxy.tipply.plpublicBaseUrl:https://tipply.pl/apialertSocketBaseUrl:https://alert-ws.tipply.plcommandsSocketBaseUrl:https://ws.tipply.plappOrigin:https://app.tipply.plcookieName:auth_tokenincludeCredentials:truetimeoutMs:30000
Per-Request Overrides
Section titled “Per-Request Overrides”Most resource methods accept:
type RequestOptions = { signal?: AbortSignal; timeoutMs?: number;};const abortController = new AbortController();
const tips = await client.tips.list().limit(20).get({ signal: abortController.signal, timeoutMs: 5_000,});Validation
Section titled “Validation”Response validation is enabled by default.
const client = createTipplyClient({ authCookie: process.env.TIPPLY_AUTH_COOKIE!, validation: false,});Leave validation enabled unless you have a strong reason to bypass schema checks.
Closing Background Work
Section titled “Closing Background Work”If you enable periodic refreshes with auth.refreshTokenEvery, stop the timer when the client is no longer needed:
client.close();