Automatic TypeScript type generation and a fully typed API client for Strapi v5. Install a Strapi plugin, run a single CLI command, and get clean TypeScript interfaces plus a ready-to-use fetch client with full autocomplete.
npm install strapi-typed-client// config/plugins.ts
export default {
'strapi-typed-client': {
enabled: true,
},
}Generate into your source tree and commit the result:
npx strapi-types generate --url http://localhost:1337 --output ./src/strapiCommitted types survive reinstalls and show up as reviewable diffs.
import { StrapiClient } from '@/strapi'
const strapi = new StrapiClient({
baseURL: 'http://localhost:1337',
})
const articles = await strapi.articles.find({
filters: { title: { $contains: 'hello' } },
populate: { category: true, cover: true },
})
articles[0].category.name // fully typed- Clean, flat TypeScript interfaces from your Strapi schema
- Typed API client —
find,findOne,create,update,delete - Built-in upload plugin support —
client.upload.upload/find/findOne/destroy - Typed errors with
isStrapiErrorOffor discriminated narrowing - Automatic type inference for
populate— no manual casting - Nested populate with unlimited depth
- Separate Input types for create/update (relations as IDs)
- DynamicZone support with union types
- Components and nested components
- Entity-specific filter types
- Next.js integration (
withStrapiTypes, cache, revalidate, tags) - Schema hashing — skips regeneration when nothing changed
- Framework-agnostic — works with any TypeScript project
- Strapi v5
- Node.js >= 22
Full documentation is available at boxlab-ltd.github.io/strapi-typed-client:
- Getting Started — installation, plugin setup, first generation
- CLI Commands — generate, check, watch
- Client Usage — CRUD operations, error handling
- Populate — type inference, nested populate
- Filtering & Sorting — filters, pagination, field selection
- Next.js Integration — auto-generation, cache options
- Plugin Config — requireAuth, endpoints, schema hashing
- API Reference — full StrapiClient API
The docs are published in agent-friendly formats so AI coding assistants answer questions about this library accurately:
-
llms.txt —
/llms.txtand/llms-full.txt. Add the docs roothttps://boxlab-ltd.github.io/strapi-typed-client/to Cursor (@Docs), Continue (@docs), or any tool that indexes docs by URL. -
context7 — indexed at
/boxlab-ltd/strapi-typed-client; the docs site also embeds the context7 chat widget. -
GitMCP — point any MCP-capable agent at
https://gitmcp.io/BoxLab-Ltd/strapi-typed-client:{ "mcpServers": { "strapi-typed-client": { "url": "https://gitmcp.io/BoxLab-Ltd/strapi-typed-client" } } } -
DeepWiki — browse or query the auto-generated wiki at deepwiki.com/BoxLab-Ltd/strapi-typed-client, or connect its MCP at
https://mcp.deepwiki.com/mcp.
Found a bug or have a feature request? Open an issue on GitHub.
Pull requests are welcome — please open an issue first to discuss what you'd like to change.
MIT