[Home](./index.md) > [trashposs-js](./trashposs-js.md) > [api](./trashposs-js.api.md) > [APIClient](./trashposs-js.api.apiclient.md) > [request](./trashposs-js.api.apiclient.request.md) ## api.APIClient.request() method **Signature:** ```typescript request( endpoint: E, params?: P, credential?: string | null | undefined, ): Promise< Endpoints[E]["res"] extends { $switch: { $cases: [any, any][]; $default: any; }; } ? IsCaseMatched extends true ? GetCaseResult : IsCaseMatched extends true ? GetCaseResult : IsCaseMatched extends true ? GetCaseResult : IsCaseMatched extends true ? GetCaseResult : IsCaseMatched extends true ? GetCaseResult : IsCaseMatched extends true ? GetCaseResult : IsCaseMatched extends true ? GetCaseResult : IsCaseMatched extends true ? GetCaseResult : IsCaseMatched extends true ? GetCaseResult : IsCaseMatched extends true ? GetCaseResult : Endpoints[E]["res"]["$switch"]["$default"] : Endpoints[E]["res"] >; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | | endpoint | E | | | params | P | _(Optional)_ | | credential | string \| null \| undefined | _(Optional)_ | **Returns:** Promise< [Endpoints](./trashposs-js.endpoints.md)\[E\]\["res"\] extends { $switch: { $cases: \[any, any\]\[\]; $default: any; }; } ? IsCaseMatched<E, P, 0> extends true ? GetCaseResult<E, P, 0> : IsCaseMatched<E, P, 1> extends true ? GetCaseResult<E, P, 1> : IsCaseMatched<E, P, 2> extends true ? GetCaseResult<E, P, 2> : IsCaseMatched<E, P, 3> extends true ? GetCaseResult<E, P, 3> : IsCaseMatched<E, P, 4> extends true ? GetCaseResult<E, P, 4> : IsCaseMatched<E, P, 5> extends true ? GetCaseResult<E, P, 5> : IsCaseMatched<E, P, 6> extends true ? GetCaseResult<E, P, 6> : IsCaseMatched<E, P, 7> extends true ? GetCaseResult<E, P, 7> : IsCaseMatched<E, P, 8> extends true ? GetCaseResult<E, P, 8> : IsCaseMatched<E, P, 9> extends true ? GetCaseResult<E, P, 9> : [Endpoints](./trashposs-js.endpoints.md)\[E\]\["res"\]\["$switch"\]\["$default"\] : [Endpoints](./trashposs-js.endpoints.md)\[E\]\["res"\] >