---
title: "Prisma Client API: review, setup & limitations · Undominated.ai"
canonical: https://undominated.ai/skills/prisma-client-api/
description: "Covers Prisma Client model queries, relation filtering, interactive transactions, and batching semantics."
---

# Prisma Client API: review, setup & limitations · Undominated.ai

> Covers Prisma Client model queries, relation filtering, interactive transactions, and batching semantics.

[← Explore all skills](/skills/)

DATABASES / Prisma

# Prisma Client API

Covers Prisma Client model queries, relation filtering, interactive transactions, and batching semantics.

 [See setup guidance ↓](#setup)[Original source ↗](https://github.com/prisma/skills/tree/be16a8740d01363d13552b317042431ee8dfc581/prisma-client-api)

SOURCE REVIEW

 Reviewed 2026-10-15
 Evidence 4 linked sources
 Publisher Prisma
 Licence [MIT ↗](https://github.com/prisma/skills/blob/be16a8740d01363d13552b317042431ee8dfc581/LICENSE)
 Revision be16a8740d01
 [Read what was—and wasn’t—checked ↓](#review)

“Prisma Client API reference covering model queries, filters, operators, and client methods. Use when writing database queries, using CRUD operations, filtering data, or configuring Prisma Client.…”

 [Prisma · upstream description ↗](https://github.com/prisma/skills/blob/be16a8740d01363d13552b317042431ee8dfc581/prisma-client-api/SKILL.md) Our analysis follows below.

01 / THE REASONING

## Why this made the selection.

 - Details explicit relation filtering semantics (some, every, none) and type-safe pagination patterns (cursor-based vs offset-based) with TypeScript type examples.
- Clearly defines boundary between sequential array transactions and interactive transaction closures ($transaction(async (tx) => ...)) with timeout tunables.

### A good fit for

 - Writing complex relational queries and mutations with full TypeScript type inference
- Auditing database transaction boundaries and concurrency isolation levels in Prisma applications
- Use tagged raw SQL and raw-query transactions when the model API is insufficient
- Choose relation filters for at-least-one, every, or no matching related records using some, every and none.

### Weigh up before choosing

 - Assumes a generated Prisma Client in node_modules/@prisma/client or a custom output directory; does not execute code generation.
- Engine-level connection pooling tuning is outside this entry's reviewed scope; raw SQL is covered by the inspected raw-queries reference.
- Raw identifier interpolation is not safely parameterized as a value; allowlist identifiers before Prisma.raw or unsafe SQL. BigInt-to-Number conversion can lose precision.

02 / THE REVIEW RECORD

## What we actually inspected.

Source review has boundaries. A clear record is more useful than a “safe” badge.

### Material inspected

 - prisma-client-api/SKILL.md
- LICENSE
- prisma-client-api/references/raw-queries.md

### Our findings

 - License is confirmed MIT: Copyright (c) 2025 Prisma.
- Version metadata in frontmatter pins client version 7.9.1 compatibility.
- The raw-query reference covers queryRaw/executeRaw, unsafe variants, parameterization, transaction examples and driver-specific return/error handling.
- Relation filters distinguish some, every, none, is, and isNot.

### Not established by this review

 - Prisma Client generation and database executions were not tested against a live SQL backend.
- Database driver query plan performance was not measured.
- Not executed: it was not installed or run.

The review applies to the material and revision named here. A newer upstream release can change its behavior.

03 / PUT IT TO WORK

## Add a skill to your workflow.

[Upstream setup instructions ↗](https://github.com/vercel-labs/skills/blob/48dc9e8eb8aa19040e91cb90ba0b642c9cbad57e/README.md)

DOCUMENTED COMMAND

 npx skills add prisma/skills/prisma-client-api Copy command ↗

Run in your terminal to choose your AI tools, project or global scope, and installation method. This short command follows the current upstream version; the review covers the revision shown above.

 Optional: install the reviewed revision

Keeps the original source and installer version where recorded, while leaving your AI tools and installation scope for you to choose.

 npx skills add https://github.com/prisma/skills/tree/be16a8740d01363d13552b317042431ee8dfc581/prisma-client-api Copy reviewed-revision command ↗ - Install the skill with the pinned npx command.
- The publisher README lists npx skills add prisma/skills --skill prisma-client-api, which does not pin revision be16a8740d01363d13552b317042431ee8dfc581.
- For manual installation instead, download the complete bundle from https://undominated.ai/resources/skills/prisma-client-api/bundle.zip and extract it into a new directory. It holds SKILL.md and 8 supporting files unchanged at revision be16a874, the upstream licence and an attribution file.
- Place the extracted directory in your host's documented skills directory, named prisma-client-api. Keep SKILL.md and the licence together.

### Before you start

 - Node.js runtime
- A project with Prisma Client installed

### Compatibility

Agent Skills hosts · Prisma ORM 7 · TypeScript / JavaScript runtimes

### Implementation

Markdown · TypeScript

### Prisma Client API query guidelines

 - Read skill instructions
- No live database connection requested
- Execute CRUD, raw SELECT or mutation SQL and transactions under database credentials; unsafe variants require explicit input handling.

### Cost model

MIT license at no charge. Copyright (c) 2025 Prisma.

THE COMPLETE REVIEWED DEFINITION

## Read it before you reuse it.

Original source bytes, with attribution. Review the host-specific setup notes above.

 Copy definition ↗ [Download complete resource + licence ↗](/resources/skills/prisma-client-api/bundle.zip)[Raw Markdown ↗](/resources/skills/prisma-client-api/definition.md)
 ---
name: prisma-client-api
description: Prisma Client API reference covering model queries, filters, operators, and client methods. Use when writing database queries, using CRUD operations, filtering data, or configuring Prisma Client. Triggers on "prisma query", "findMany", "create", "update", "delete", "$transaction".
license: MIT
metadata:
 author: prisma
 version: "7.9.1"
---

# Prisma Client API Reference

Complete API reference for Prisma Client. This skill provides guidance on model queries, filtering, relations, and client methods for current Prisma projects.

## When to Apply

Reference this skill when:
- Writing database queries with Prisma Client
- Performing CRUD operations (create, read, update, delete)
- Filtering and sorting data
- Working with relations
- Using transactions
- Configuring client options

## Rule Categories by Priority

| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Client Construction | HIGH | `constructor` |
| 2 | Model Queries | CRITICAL | `model-queries` |
| 3 | Query Shape | HIGH | `query-options` |
| 4 | Filtering | HIGH | `filters` |
| 5 | Relations | HIGH | `relations` |
| 6 | Transactions | CRITICAL | `transactions` |
| 7 | Raw SQL | CRITICAL | `raw-queries` |
| 8 | Client Methods | MEDIUM | `client-methods` |

## Quick Reference

- `constructor` - `PrismaClient` setup, adapter wiring, logging, and SQL commenter plugins
- `model-queries` - CRUD operations and bulk operations
- `query-options` - `select`, `include`, `omit`, sort, pagination
- `filters` - scalar and logical filter operators
- `relations` - relation reads and nested writes
- `transactions` - array and interactive transaction patterns
- `raw-queries` - `$queryRaw` and `$executeRaw` safety
- `client-methods` - lifecycle methods, extensions, and `satisfies` patterns for `prisma-client`

## Client Instantiation

```typescript
import { PrismaClient } from '../generated/client'
import { PrismaPg } from '@prisma/adapter-pg'

const adapter = new PrismaPg({
 connectionString: process.env.DATABASE_URL
})

const prisma = new PrismaClient({ adapter })
```

## Model Query Methods

| Method | Description |
|--------|-------------|
| `findUnique()` | Find one record by unique field |
| `findUniqueOrThrow()` | Find one or throw error |
| `findFirst()` | Find first matching record |
| `findFirstOrThrow()` | Find first or throw error |
| `findMany()` | Find multiple records |
| `create()` | Create a new record |
| `createMany()` | Create multiple records |
| `createManyAndReturn()` | Create multiple and return them |
| `update()` | Update one record |
| `updateMany()` | Update multiple records |
| `updateManyAndReturn()` | Update multiple and return them |
| `upsert()` | Update or create record |
| `delete()` | Delete one record |
| `deleteMany()` | Delete multiple records |
| `count()` | Count matching records |
| `aggregate()` | Aggregate values (sum, avg, etc.) |
| `groupBy()` | Group and aggregate |

## Query Options

| Option | Description |
|--------|-------------|
| `where` | Filter conditions |
| `select` | Fields to include |
| `include` | Relations to load |
| `omit` | Fields to exclude |
| `orderBy` | Sort order |
| `take` | Limit results |
| `skip` | Skip results (pagination) |
| `cursor` | Cursor-based pagination |
| `distinct` | Unique values only |

## Client Methods

| Method | Description |
|--------|-------------|
| `$connect()` | Explicitly connect to database |
| `$disconnect()` | Disconnect from database |
| `$transaction()` | Execute transaction |
| `$queryRaw()` | Execute raw SQL query |
| `$executeRaw()` | Execute raw SQL command |
| `$on()` | Subscribe to events |
| `$extends()` | Add extensions |

## Quick Examples

### Find records

```typescript
// Find by unique field
const user = await prisma.user.findUnique({
 where: { email: 'alice@prisma.io' }
})

// Find with filter
const users = await prisma.user.findMany({
 where: { role: 'ADMIN' },
 orderBy: { createdAt: 'desc' },
 take: 10
})
```

### Create records

```typescript
const user = await prisma.user.create({
 data: {
 email: 'alice@prisma.io',
 name: 'Alice',
 posts: {
 create: { title: 'Hello World' }
 }
 },
 include: { posts: true }
})
```

### Update records

```typescript
const user = await prisma.user.update({
 where: { id: 1 },
 data: { name: 'Alice Smith' }
})
```

### Delete records

```typescript
await prisma.user.delete({
 where: { id: 1 }
})
```

### Transactions

```typescript
const [user, post] = await prisma.$transaction([
 prisma.user.create({ data: { email: 'alice@prisma.io' } }),
 prisma.post.create({ data: { title: 'Hello', authorId: 1 } })
])
```

## Rule Files

Detailed API documentation:

```
references/constructor.md - PrismaClient constructor options
references/model-queries.md - CRUD operations
references/query-options.md - select, include, omit, where, orderBy
references/filters.md - Filter conditions and operators
references/relations.md - Relation queries and nested operations
references/transactions.md - Transaction API
references/raw-queries.md - $queryRaw, $executeRaw
references/client-methods.md - $connect, $disconnect, $on, $extends
```

## Filter Operators

| Operator | Description |
|----------|-------------|
| `equals` | Exact match |
| `not` | Not equal |
| `in` | In array |
| `notIn` | Not in array |
| `lt`, `lte` | Less than |
| `gt`, `gte` | Greater than |
| `contains` | String contains |
| `startsWith` | String starts with |
| `endsWith` | String ends with |
| `mode` | Case sensitivity |

## Relation Filters

| Operator | Description |
|----------|-------------|
| `some` | At least one related record matches |
| `every` | All related records match |
| `none` | No related records match |
| `is` | Related record matches (1-to-1) |
| `isNot` | Related record doesn't match |

## Resources

- [Prisma Client API Reference](https://www.prisma.io/docs/orm/reference/prisma-client-reference)
- [CRUD Operations](https://www.prisma.io/docs/orm/prisma-client/queries/crud)
- [Filtering and Sorting](https://www.prisma.io/docs/orm/prisma-client/queries/filtering-and-sorting)

## How to Use

Pick the category from the table above, then open the matching reference file for implementation details and examples.

The download contains SKILL.md . Extract the whole bundle; the supporting files are required. Inspect the included MANIFEST.json for file hashes.

By **Prisma**. [Exact upstream source ↗](https://github.com/prisma/skills/blob/be16a8740d01363d13552b317042431ee8dfc581/prisma-client-api/SKILL.md) · [Licence](/resources/skills/prisma-client-api/LICENSE.txt) · [Attribution](/resources/skills/prisma-client-api/ATTRIBUTION.txt)

SHA-256 d033821313dc64b2b7dee120c6904b7d4457813e3b9c82d9584f7dee74baabe4

 Read the applicable licence MIT License

Copyright (c) 2025 Prisma

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

04 / FOLLOW THE EVIDENCE

## The source trail.

Our notes are separate from the original resource. Check upstream before adopting a new version.

 - [Prisma Client API skill definition ↗](https://github.com/prisma/skills/blob/be16a8740d01363d13552b317042431ee8dfc581/prisma-client-api/SKILL.md) Checked 2026-10-14 https://github.com/prisma/skills/blob/be16a8740d01363d13552b317042431ee8dfc581/prisma-client-api/SKILL.md Supports: summary, whySelected, bestFor, limitations
- [Prisma skills repository license ↗](https://github.com/prisma/skills/blob/be16a8740d01363d13552b317042431ee8dfc581/LICENSE) Checked 2026-10-07 https://github.com/prisma/skills/blob/be16a8740d01363d13552b317042431ee8dfc581/LICENSE Supports: license
- [prisma-client-api/references/raw-queries.md ↗](https://github.com/prisma/skills/blob/be16a8740d01363d13552b317042431ee8dfc581/prisma-client-api/references/raw-queries.md) Checked 2026-10-14 https://github.com/prisma/skills/blob/be16a8740d01363d13552b317042431ee8dfc581/prisma-client-api/references/raw-queries.md Supports: review, limitations, access, install
- [Pinned source review C2-W30 ↗](https://raw.githubusercontent.com/prisma/skills/be16a8740d01363d13552b317042431ee8dfc581/prisma-client-api/SKILL.md) Checked 2026-10-15 https://raw.githubusercontent.com/prisma/skills/be16a8740d01363d13552b317042431ee8dfc581/prisma-client-api/SKILL.md Supports: bestFor, review.notTested, review.reviewedAt, upstreamDescription

KEEP COMPARING

## Other approaches to consider.

Related by category or shared topics. These are alternatives to inspect, not a measured quality order.

 [### Prisma ORM 7 CLI ↗ Pins Prisma's ORM 7 CLI skill and its warning not to use these commands for Prisma 8 or for the public-beta Platform CLI.](/skills/prisma-cli/)[### Prisma ORM Setup ↗ Guides configuring Prisma ORM across PostgreSQL, MySQL, SQLite, SQL Server, CockroachDB, MongoDB, and Prisma Postgres.](/skills/prisma-orm-setup/)[### Azure Cosmos DB for Python ↗ Use Cosmos DB NoSQL clients for partition-aware document operations and parameterized queries.](/skills/microsoft-azure-cosmos-py/)

 [AI Tools ↗](/tools/)[Skills ↗](/skills/)[Agents ↗](/agents/)[MCP Servers ↗](/mcp-servers/)[Workflows ↗](/workflows/)

## Continue your investigation

 - [Choose a toolkit](/tools/)
- [Inspect execution hosts](/agents/)
- [Check tool access](/mcp-servers/)
- [Check project dependencies](/check-repo/)
