Typescript
Even though zodios is written in typescript, you can use it with javascript. However, if you are using typescript, you can benefit from the typescript type helpers.
ApiOf
ApiOf is a type helper that extracts the api definition type from your zodios client instance.
import { ApiOf, Zodios } from '@zodios/core';;
import { myApiDefinition } from './api-definition';
const client = new Zodios(myApiDefinition);
type MyApi = ApiOf<typeof client>;
ZodiosBodyByPath
ZodiosBodyByPath is a type helper that extracts the body type of a request from your api definition.
import { ZodiosBodyByPath } from '@zodios/core';
import { MyApi } from './my-api';
type User = ZodiosBodyByPath<MyApi,'post','/users'>;
ZodiosBodyByAlias
ZodiosBodyByAlias is a type helper that extracts the body type of a request from your api definition.
import { ZodiosBodyByAlias } from '@zodios/core';
import { MyApi } from './my-api';
type User = ZodiosBodyByAlias<MyApi,'createUsers'>;
ZodiosHeaderParamsByPath
ZodiosHeaderParamsByPath is a type helper that extracts the header params type of a request from your api definition.
import { ZodiosHeaderParamsByPath } from '@zodios/core';
import { MyApi } from './my-api';
type CreateUsersHeaderParams = ZodiosHeaderParamsByPath<MyApi,'post','/users'>;
ZodiosHeaderParamsByAlias
ZodiosHeaderParamsByAlias is a type helper that extracts the header params type of a request from your api definition.
import { ZodiosHeaderParamsByAlias } from '@zodios/core';
import { MyApi } from './my-api';
type CreateUsersHeaderParams = ZodiosHeaderParamsByAlias<MyApi,'createUsers'>;
ZodiosPathParamsByPath
ZodiosPathParamsPath is a type helper that extracts the path params type of a request from your api definition.
import { ZodiosPathParamsByPath } from '@zodios/core';
import { MyApi } from './my-api';
type GetUserPathParams = ZodiosPathParamsByPath<MyApi,'get','/users/:id'>;
ZodiosPathParamByAlias
ZodiosPathParamByAlias is a type helper that extracts the path params type of a request from your api definition.
import { ZodiosPathParamByAlias } from '@zodios/core';
import { MyApi } from './my-api';
type GetUserPathParams = ZodiosPathParamByAlias<MyApi,'getUser'>;
ZodiosResponseByPath
ZodiosResponseByPath is a type helper that extracts the response type of a request from your api definition.
import { ZodiosResponseByPath } from '@zodios/core';
import { MyApi } from './my-api';
type Users = ZodiosResponseByPath<MyApi,'get','/users'>;
ZodiosResponseByAlias
ZodiosResponseByAlias is a type helper that extracts the response type of a request from your api definition.
import { ZodiosResponseByAlias } from '@zodios/core';
import { MyApi } from './my-api';
type Users = ZodiosResponseByAlias<MyApi,'getUsers'>;
ZodiosQueryParamsByPath
ZodiosQueryParamsByPath is a type helper that extracts the query params type of a request from your api definition.
import { ZodiosQueryParamsByPath } from '@zodios/core';
import { MyApi } from './my-api';
type GetUsersQueryParams = ZodiosQueryParamsByPath<MyApi,'get','/users'>;
ZodiosQueryParamsByAlias
ZodiosQueryParamsByAlias is a type helper that extracts the query params type of a request from your api definition.
import { ZodiosQueryParamsByAlias } from '@zodios/core';
import { MyApi } from './my-api';
type GetUsersQueryParams = ZodiosQueryParamsByAlias<MyApi,'getUsers'>;
ZodiosErrorByPath
ZodiosErrorByPath is a type helper that extracts the error type of a request from your api definition given a status code.
import { ZodiosErrorByPath } from '@zodios/core';
import { MyApi } from './my-api';
type NotFoundUsersError = ZodiosErrorByPath<MyApi,'get','/users',404>;
ZodiosErrorByAlias
ZodiosErrorByAlias is a type helper that extracts the error type of a request from your api definition given a status code.
import { ZodiosErrorByAlias } from '@zodios/core';
import { MyApi } from './my-api';
type NotFoundUsersError = ZodiosErrorByAlias<MyApi,'getUsers',404>;
Example
import {
  makeCrudApi,
  ZodiosBodyByPath,
  ZodiosResponseByPath,
  ZodiosPathParamsByPath,
  ZodiosQueryParamsByPath,
} from "@zodios/code";
import z from "zod";
const user = z.object({
  id: z.number(),
  name: z.string(),
  email: z.string().email(),
  phone: z.string(),
});
const api = makeCrudApi("user", user);
type User = z.infer<typeof user>;
type Api = typeof api;
type Users = ZodiosResponseByPath<Api, "get", "/users">;
//    ^? type Users = { id: number; name: string; email: string; phone: string; }[]
type UserById = ZodiosResponseByPath<Api, "get", "/users/:id">;
//    ^? type UserById = { id: number; name: string; email: string; phone: string; }
type GetUserParams = ZodiosPathParamsByPath<Api,'get',"/users/:id">;
//    ^? type GetUserParams = { id: number; }
type GetUserQueries = ZodiosQueryParamsByPath<Api, "get", "/users/:id">;
//    ^? type GetUserQueries = never
type CreateUserBody = ZodiosBodyByPath<Api, "post", "/users">;
//    ^? type CreateUserBody = { name: string; email: string; phone: string; }
type CreateUserResponse = ZodiosResponseByPath<Api, "post", "/users">;
//    ^? type CreateUserResponse = { id: number; name: string; email: string; phone: string; }
type UpdateUserBody = ZodiosBodyByPath<Api, "put", "/users/:id">;
//    ^? type UpdateUserBody = { name: string; email: string; phone: string; }
type PatchUserBody = ZodiosBodyByPath<Api, "patch", "/users/:id">;
//    ^? type PatchUserBody = { name?: string | undefined; email?: string | undefined; phone?: string | undefined; }