---
title: "Create data-access role"
method: POST
path: "/v4/data-access/roles"
tags: ["v4", "Data Access"]
---

# Create data-access role

`POST /v4/data-access/roles`

## Request body

- CreateDataAccessRoleRequest
  - `name` string, required — Human-readable role name
  - `isDefault` boolean — Whether this role is the team default
  - `accessMode` 'read_write' | 'read_only' — read_write (default) allows writes on visible tables; read_only restricts the role to SELECTs

## Response `201`

Success

- SuccessResponseDataAccessRole
  - `success` true, required — Flag for it request was successful
  - `data` DataAccessRole, required
    - `id` union — Unique role identifier (DB-generated)
      - string, uuid
      - string
    - `teamId` union, required — Owning team
      - string, uuid
      - string
    - `name` string, required — Human-readable role name
    - `isDefault` boolean — Whether this role is automatically assigned to new team members
    - `accessMode` 'read_write' | 'read_only' — Whether the role may issue write statements (INSERT/UPDATE/DELETE/MERGE/DDL/COPY) against visible tables. Defaults to read_write.
    - `createdAt` string, date-time, nullable — Creation timestamp (DB-generated)
  - `meta` ResponseMeta
    - `requestId` string — Unique request identifier for tracing
    - `timestamp` string, date-time — Response timestamp (UTC)
    - `durationMs` integer, nullable — Request processing time in milliseconds

## Other responses

- `401` — Auth Invalid Token
- `403` — Forbidden Insufficient Permissions
- `409` — Resource Conflict
- `422` — Validation Failed
- `426` — Business Quota Exceeded
- `500` — Internal Error

---

[API](https://skmtc.dev/definite/apis/defapi.md) · [All operations](https://skmtc.dev/definite/apis/defapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/definite/defapi/revisions/3943d8deb3be/schema)
