Options to be passed when creating the REST instance

interface RESTOptions {
    agent: null | Dispatcher;
    api: string;
    authPrefix: "Bearer" | "Bot";
    cdn: string;
    globalRequestsPerSecond: number;
    handlerSweepInterval: number;
    hashLifetime: number;
    hashSweepInterval: number;
    headers: Record<string, string>;
    invalidRequestWarningInterval: number;
    mediaProxy: string;
    offset: number | GetRateLimitOffsetFunction;
    rejectOnRateLimit: null | string[] | RateLimitQueueFilter;
    retries: number;
    timeout: number;
    userAgentAppendix: string;
    version: string;
    makeRequest(url: string, init: RequestInit): Promise<ResponseLike>;
}

Properties

agent: null | Dispatcher

The agent to set globally

api: string

The base api path, without version

'https://discord.com/api'

authPrefix: "Bearer" | "Bot"

The authorization prefix to use for requests, useful if you want to use bearer tokens

'Bot'

cdn: string

The cdn path

'https://cdn.discordapp.com'

globalRequestsPerSecond: number

How many requests to allow sending per second (Infinity for unlimited, 50 for the standard global limit used by Discord)

50

handlerSweepInterval: number

The amount of time in milliseconds that passes between each hash sweep. (defaults to 1h)

3_600_000

hashLifetime: number

The maximum amount of time a hash can exist in milliseconds without being hit with a request (defaults to 24h)

86_400_000

hashSweepInterval: number

The amount of time in milliseconds that passes between each hash sweep. (defaults to 4h)

14_400_000

headers: Record<string, string>

Additional headers to send for all API requests

{}

invalidRequestWarningInterval: number

The number of invalid REST requests (those that return 401, 403, or 429) in a 10 minute window between emitted warnings (0 for no warnings). That is, if set to 500, warnings will be emitted at invalid request number 500, 1000, 1500, and so on.

0

mediaProxy: string

The media proxy path

'https://media.discordapp.net'

The extra offset to add to rate limits in milliseconds

50

rejectOnRateLimit: null | string[] | RateLimitQueueFilter

Determines how rate limiting and pre-emptive throttling should be handled. When an array of strings, each element is treated as a prefix for the request route (e.g. /channels to match any route starting with /channels such as /channels/:id/messages) for which to throw RateLimitErrors. All other request routes will be queued normally

null

retries: number

The number of retries for errors with the 500 code, or errors that timeout

3

timeout: number

The time to wait in milliseconds before a request is aborted

15_000

userAgentAppendix: string

Extra information to add to the user agent

DefaultUserAgentAppendix
version: string

The version of the API to use

'10'

Methods

  • The method called to perform the actual HTTP request given a url and web fetch options For example, to use global fetch, simply provide makeRequest: fetch

    Parameters

    Returns Promise<ResponseLike>