# @polkadot-api/codegen

Latest version **0.23.1** (published 2026-09-01) · MIT license · 0 weekly downloads

## Install

```sh
npm install @polkadot-api/codegen
pnpm add @polkadot-api/codegen
yarn add @polkadot-api/codegen
bun add @polkadot-api/codegen
```

## Health

**Score 75/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.23.1 |
| Published | 2026-09-01 |
| First published | 2024-03-05 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 5 |
| Unpacked size | 432 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 156 |
| Author | Josep M Sobrepere (https://github.com/josepot) |
| Maintainers | voliva, josepot |

## Links

- npm: https://www.npmjs.com/package/@polkadot-api/codegen
- Repository: https://github.com/polkadot-api/polkadot-api
- npm.io page: https://npm.io/package/@polkadot-api/codegen

## Dependencies (5)

- [@polkadot-api/utils](https://npm.io/package/@polkadot-api/utils.md) 0.4.0
- [@polkadot-api/ink-contracts](https://npm.io/package/@polkadot-api/ink-contracts.md) 0.7.1
- [@polkadot-api/metadata-builders](https://npm.io/package/@polkadot-api/metadata-builders.md) 0.15.1
- [@polkadot-api/substrate-bindings](https://npm.io/package/@polkadot-api/substrate-bindings.md) 0.21.1
- [@polkadot-api/metadata-compatibility](https://npm.io/package/@polkadot-api/metadata-compatibility.md) 0.7.1

## Recent versions

- 0.23.1 (latest) — 2026-09-01
- 0.23.2-canary.49bdaa9 (canary) — 2026-09-01
- 0.23.0-rc.1 (rc) — 2026-07-08
- 0.0.1-c9bb2ce3de90b7b5745189b6e3258c7cd945bb40.1.0 (next) — 2024-04-04
- 0.23.2-canary.786fa29 — 2026-09-01
- 0.23.1-canary.2bce46a — 2026-08-20
- 0.23.1-canary.e24aebd — 2026-08-20
- 0.23.0 — 2026-08-18
- 0.23.1-canary.d8b2d3d — 2026-08-18
- 0.23.1-canary.8c00f44 — 2026-08-17
- 0.23.1-canary.57eb571 — 2026-07-29
- 0.23.1-canary.996069a — 2026-07-29
- 0.23.1-canary.7f105ae — 2026-07-28
- 0.23.1-canary.9390531 — 2026-07-20
- 0.23.1-canary.22b1f2b — 2026-07-20
- … 230 more at https://npm.io/package/@polkadot-api/codegen/versions

## README

# polkadot-api

## Features

- Light client first: built on top of the [new JSON-RPC spec](https://paritytech.github.io/json-rpc-interface-spec/) to fully leverage the potential of light-clients (i.e: [smoldot](https://www.npmjs.com/package/smoldot)).
- Delightful TypeScript support with types and docs generated from on-chain metadata.
- First class support for storage reads, constants, transactions, events and runtime-calls.
- Performant and lightweight: ships with multiple subpaths, so dApps don't bundle unnecessary assets.
- Uses native [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt), instead of large BigNumber libraries
- Leverages dynamic imports to favour faster loading times.
- Promise-based and Observable-based APIs: use the one that best suit your needs and/or coding style.
- Use signers from your browser extension, or from a private key.
- Easy integration with PJS-based extensions.

... and a lot lot more.

## Overview

#### `smoldot.ts`

```ts
import { startFromWorker } from "polkadot-api/smoldot/from-worker"
import SmWorker from "polkadot-api/smoldot/worker?worker"

// Starting smoldot on a Worker (strongly recommended)
export const smoldot = startFromWorker(new SmWorker())

// Alternatively, we could have smoldot running on the main-thread, e.g:
// import { start } from "polkadot-api/smoldot"
// export const smoldot = start()
```

#### `main.ts`

```ts
import { createClient } from "polkadot-api"
import { getSmProvider } from "polkadot-api/sm-provider"
import { polkadotTypes } from "@polkadot-api/descriptors"
import { smoldot } from "./smoldot"

// dynamically importing the chainSpec improves the performance of your dApp
const smoldotRelayChain = import("polkadot-api/chains/polkadot").then(
  ({ chainSpec }) => smoldot.addChain({ chainSpec }),
)

// getting a `JsonRpcProvider` from a `smoldot` chain.
const jsonRpcProvider = getSmProvider(smoldotRelayChain)

// we could also create a `JsonRpcProvider` from a WS connection, eg:
// const jsonRpcProvider = WsProvider("wss://some-rpc-endpoint.io")

const polkadotClient = createClient(jsonRpcProvider)

// logging blocks as they get finalized
polkadotClient.finalizedBlock$.subscribe((block) => {
  console.log(`#${block.number} - ${block.hash} - parentHash: ${block.parent}`)
})

// pulling the latest finalized block
const block = await polkadotClient.getFinalizedBlock()

// obtaining a delightfully typed interface from the descriptors
// previously generated from the metadata
const polkadotApi = polkadotClient.getTypedApi(polkadotTypes)

// presenting the transferrable amount of a given account
const {
  data: { free, frozen },
} = await polkadotApi.query.System.Account.getValue(
  "15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5",
)
console.log(`Transferrable amount: ${free - frozen}`)
```

## Documentation

Browse our latest docs [here](https://papi.how/)!

## Announcement: Transfer of Ownership

As of 2024-02-01, the original owner and maintainer of the Polkadot-API project, Parity Technologies, has officially transferred ownership of the project to me, Josep M Sobrepere. Read more about this transfer [here](NEWS.md#announcement-transfer-of-ownership).

---
_Source: https://npm.io/package/@polkadot-api/codegen · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
