<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/lfu0ssams" -->

---
title: OpenAPI to TypeScript Generator | daily.dev
description: A TypeScript code generator that creates fully-typed Zod v4 schemas and type-safe REST API clients from OpenAPI specifications. Features include support for...
canonical: https://daily.dev/posts/lfu0ssams
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: OpenAPI to TypeScript Generator | daily.dev
og:description: A TypeScript code generator that creates fully-typed Zod v4 schemas and type-safe REST API clients from OpenAPI specifications. Features include support for...
og:url: https://daily.dev/posts/lfu0ssams
og:image: https://api.daily.dev/og/posts/lfu0SsAms.png
og:image:alt: Post cover image
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAPI to TypeScript Generator

**[Luther Blisset](https://daily.dev/sources/qdhuypqoslpimby4hrlxx)** · [@gunzip](https://daily.dev/gunzip) · 0 upvotes · 0 comments

## Summary

A TypeScript code generator that creates fully-typed Zod v4 schemas and type-safe REST API clients from OpenAPI specifications. Features include support for OpenAPI 2.0, 3.0.x, and 3.1.x, comprehensive validation, error handling with discriminated unions, and minimal dependencies. The tool generates both client and server code with tree-shakable imports and never-throwing client calls.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://gunzip.github.io/apical-ts/>

---

Tags: [#typescript](https://daily.dev/tags/typescript), [#openapi](https://daily.dev/tags/openapi), [#zod](https://daily.dev/tags/zod)

[View this post on daily.dev](https://daily.dev/posts/lfu0ssams)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/lfu0ssams","headline":"OpenAPI to TypeScript Generator","text":"Shared: OpenAPI to TypeScript Generator","url":"https://daily.dev/posts/lfu0ssams","datePublished":"2026-01-12T11:01:57.811Z","dateModified":"2026-01-12T11:01:57.813Z","author":{"@type":"Person","name":"Luther Blisset","url":"https://daily.dev/gunzip","image":"https://media.daily.dev/image/upload/s--uxuGKUMB--/f_auto/v1757449828/avatars/avatar_qdhuypqOSLpiMBY4hRLXX?_a=BAMClqZW0","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":20}},"image":"https://media.daily.dev/image/upload/s--OHB84bZF--/f_auto/v1722860399/public/Placeholder%2010","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"sharedContent":{"@type":"WebPage","url":"https://api.daily.dev/r/Hs8BNsj1b"},"isPartOf":{"@type":"WebPage","url":"https://daily.dev/sources/qdhuypqoslpimby4hrlxx","name":"Luther Blisset"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Luther Blisset","item":"https://daily.dev/sources/qdhuypqoslpimby4hrlxx"},{"@type":"ListItem","position":3,"name":"OpenAPI to TypeScript Generator"}]}
```

