Options are the same as window.fetch, except for the KyOptions

interface Options {
    body?: null | BodyInit;
    cache?: RequestCache;
    credentials?: RequestCredentials;
    fetch?: ((input, init?) => Promise<Response>);
    headers?: KyHeadersInit;
    hooks?: Hooks;
    integrity?: string;
    json?: unknown;
    keepalive?: boolean;
    method?: LiteralUnion<HttpMethod, string>;
    mode?: RequestMode;
    onDownloadProgress?: ((progress, chunk) => void);
    parseJson?: ((text) => unknown);
    prefixUrl?: string | URL;
    priority?: RequestPriority;
    redirect?: RequestRedirect;
    referrer?: string;
    referrerPolicy?: ReferrerPolicy;
    retry?: number | RetryOptions;
    searchParams?: SearchParamsOption;
    signal?: null | AbortSignal;
    throwHttpErrors?: boolean;
    timeout?: number | false;
    window?: null;
}

Hierarchy (view full)

Properties

body?: null | BodyInit

A BodyInit object or null to set request's body.

cache?: RequestCache

A string indicating how the request will interact with the browser's cache to set request's cache.

credentials?: RequestCredentials

A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials.

fetch?: ((input, init?) => Promise<Response>)

User-defined fetch function. Has to be fully compatible with the Fetch API standard.

Use-cases:

  1. Use custom fetch implementations like isomorphic-unfetch.
  2. Use the fetch wrapper function provided by some frameworks that use server-side rendering (SSR).

Type declaration

    • (input, init?): Promise<Response>
    • Parameters

      • input: Input
      • Optional init: RequestInit

      Returns Promise<Response>

Default

fetch

Example

import ky from 'ky';
import fetch from 'isomorphic-unfetch';

const json = await ky('https://example.com', {fetch}).json();
headers?: KyHeadersInit

HTTP headers used to make the request.

You can pass a Headers instance or a plain object.

You can remove a header with .extend() by passing the header with an undefined value.

Example

import ky from 'ky';

const url = 'https://sindresorhus.com';

const original = ky.create({
headers: {
rainbow: 'rainbow',
unicorn: 'unicorn'
}
});

const extended = original.extend({
headers: {
rainbow: undefined
}
});

const response = await extended(url).json();

console.log('rainbow' in response);
//=> false

console.log('unicorn' in response);
//=> true
hooks?: Hooks

Hooks allow modifications during the request lifecycle. Hook functions may be async and are run serially.

integrity?: string

A cryptographic hash of the resource to be fetched by request. Sets request's integrity.

json?: unknown

Shortcut for sending JSON. Use this instead of the body option.

Accepts any plain object or value, which will be JSON.stringify()'d and sent in the body with the correct header set.

keepalive?: boolean

A boolean to set request's keepalive.

method?: LiteralUnion<HttpMethod, string>

HTTP method used to make the request.

Internally, the standard methods (GET, POST, PUT, PATCH, HEAD and DELETE) are uppercased in order to avoid server errors due to case sensitivity.

A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode.

onDownloadProgress?: ((progress, chunk) => void)

Download progress event handler.

Type declaration

    • (progress, chunk): void
    • Parameters

      • progress: DownloadProgress
      • chunk: Uint8Array

        Note: It's empty for the first call.

      Returns void

Example

import ky from 'ky';

const response = await ky('https://example.com', {
onDownloadProgress: (progress, chunk) => {
// Example output:
// `0% - 0 of 1271 bytes`
// `100% - 1271 of 1271 bytes`
console.log(`${progress.percent * 100}% - ${progress.transferredBytes} of ${progress.totalBytes} bytes`);
}
});
parseJson?: ((text) => unknown)

User-defined JSON-parsing function.

Use-cases:

  1. Parse JSON via the bourne package to protect from prototype pollution.
  2. Parse JSON with reviver option of JSON.parse().

Type declaration

    • (text): unknown
    • Parameters

      • text: string

      Returns unknown

Default

JSON.parse()

Example

import ky from 'ky';
import bourne from '@hapijs/bourne';

const json = await ky('https://example.com', {
parseJson: text => bourne(text)
}).json();
prefixUrl?: string | URL

A prefix to prepend to the input URL when making the request. It can be any valid URL, either relative or absolute. A trailing slash / is optional and will be added automatically, if needed, when it is joined with input. Only takes effect when input is a string. The input argument cannot start with a slash / when using this option.

Useful when used with ky.extend() to create niche-specific Ky-instances.

Notes:

  • After prefixUrl and input are joined, the result is resolved against the base URL of the page (if any).
  • Leading slashes in input are disallowed when using this option to enforce consistency and avoid confusion about how the input URL is handled, given that input will not follow the normal URL resolution rules when prefixUrl is being used, which changes the meaning of a leading slash.

Example

import ky from 'ky';

// On https://example.com

const response = await ky('unicorn', {prefixUrl: '/api'});
//=> 'https://example.com/api/unicorn'

const response = await ky('unicorn', {prefixUrl: 'https://cats.com'});
//=> 'https://cats.com/unicorn'
priority?: RequestPriority
redirect?: RequestRedirect

A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect.

referrer?: string

A string whose value is a same-origin URL, "about:client", or the empty string, to set request's referrer.

referrerPolicy?: ReferrerPolicy

A referrer policy to set request's referrerPolicy.

retry?: number | RetryOptions

An object representing limit, methods, statusCodes and maxRetryAfter fields for maximum retry count, allowed methods, allowed status codes and maximum Retry-After time.

If retry is a number, it will be used as limit and other defaults will remain in place.

If maxRetryAfter is set to undefined, it will use options.timeout. If Retry-After header is greater than maxRetryAfter, it will cancel the request.

By default, delays between retries are calculated with the function 0.3 * (2 ** (attemptCount - 1)) * 1000, where attemptCount is the attempt number (starts from 1), however this can be changed by passing a delay function.

Retries are not triggered following a timeout.

Example

import ky from 'ky';

const json = await ky('https://example.com', {
retry: {
limit: 10,
methods: ['get'],
statusCodes: [413]
}
}).json();
searchParams?: SearchParamsOption

Search parameters to include in the request URL. Setting this will override all existing search parameters in the input URL.

Accepts any value supported by URLSearchParams().

signal?: null | AbortSignal

An AbortSignal to set request's signal.

throwHttpErrors?: boolean

Throw an HTTPError when, after following redirects, the response has a non-2xx status code. To also throw for redirects instead of following them, set the redirect option to 'manual'.

Setting this to false may be useful if you are checking for resource availability and are expecting error responses.

Note: If false, error responses are considered successful and the request will not be retried.

Default

true
timeout?: number | false

Timeout in milliseconds for getting a response, including any retries. Can not be greater than 2147483647. If set to false, there will be no timeout.

Default

10000
window?: null

Can only be null. Used to disassociate request from any Window.

Generated using TypeDoc