Skip to main content

RequestConfig

The configuration object for HTTP requests. Passed as defaults to createClient or per-request to method helpers.

interface RequestConfig {
baseURL?: string | URL
url?: string
method?: string
headers?: HeadersInit
params?: Record<string, unknown>
body?: unknown
timeout?: number
signal?: AbortSignal
responseType?: ResponseType
validate?: Validator<unknown>
tls?: TlsConfig

followRedirects?: boolean
maxRedirects?: number
redirect?: 'follow' | 'manual' | 'error'

allowAbsoluteUrls?: boolean
allowedProtocols?: string[]
allowedRequestHeaders?: string[]
sensitiveHeaders?: string[]

formDataSerializer?: FormDataSerializer
onUploadProgress?: (event: ProgressEvent) => void
onDownloadProgress?: (event: ProgressEvent) => void
}

Options reference

URL and routing

OptionTypeDefaultDescription
baseURLstring | URLundefinedBase URL prepended to relative url values.
urlstringundefinedRequest URL (relative to baseURL if set).
methodstring'GET'HTTP method ('GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS').
paramsRecord<string, unknown>undefinedQuery parameters appended to the URL.

Headers and body

OptionTypeDefaultDescription
headersHeadersInitundefinedRequest headers. Accepts Record<string, string>, [string, string][], or Headers.
bodyunknownundefinedRequest body. Plain objects are JSON-serialised. Objects with File/Blob values are auto-converted to FormData.
formDataSerializerFormDataSerializer'brackets'How arrays and nested objects are serialised in auto-FormData: 'brackets', 'indices', or 'repeat'.

Response

OptionTypeDefaultDescription
responseTypeResponseType'json'How the response body is parsed: 'json', 'text', 'arraybuffer', , 'blob', or 'stream' (returns the un-consumed ReadableStream).
validateValidator<unknown>undefinedRuntime response validator. Accepts Standard Schema v1, { parse(input): T }, or (input) => T.

Timing and cancellation

OptionTypeDefaultDescription
timeoutnumberundefinedRequest timeout in milliseconds. 0 or undefined means no timeout.
signalAbortSignalundefinedAbort signal for cancellation. Combined with timeout via AbortSignal.any.

Redirects

OptionTypeDefaultDescription
followRedirectsbooleantrueWhether to follow HTTP redirects.
maxRedirectsnumber5Maximum number of redirects to follow.
redirect'follow' | 'manual' | 'error''manual'Low-level fetch redirect option. followRedirects takes priority. Internal use.

Security

OptionTypeDefaultDescription
allowAbsoluteUrlsbooleanfalse (when baseURL set)Whether to allow absolute URLs in the url field.
allowedProtocolsstring[]['http:', 'https:']Permitted URI schemes.
allowedRequestHeadersstring[]undefinedOpt-in allowlist of permitted request header names. When set, unlisted headers throw ERR_DISALLOWED_HEADER.
sensitiveHeadersstring[]['authorization', 'cookie', 'proxy-authorization', 'set-cookie', 'x-api-key']Headers stripped on cross-origin redirects and redacted in error/response configs.

TLS (Node-only)

OptionTypeDefaultDescription
tlsTlsConfigundefinedTLS configuration for Node.js. See TlsConfig.

Progress

OptionTypeDefaultDescription
onUploadProgress(event: ProgressEvent) => voidundefinedUpload progress callback.
onDownloadProgress(event: ProgressEvent) => voidundefinedDownload progress callback.

ProgressEvent shape

interface ProgressEvent {
loaded: number
total?: number
percent?: number
}

Type aliases

type HeadersInit = Record<string, string> | [string, string][] | Headers
type ResponseType = 'json' | 'text' | 'arraybuffer' | 'blob' | 'stream'
type FormDataSerializer = 'brackets' | 'indices' | 'repeat'

See also