---
title: "Add a group member"
method: POST
path: "/api/v1/groups/add-member/{id}/"
tags: ["Group Members"]
---

# Add a group member

`POST /api/v1/groups/add-member/{id}/`

Add a teacher or student to a group. Only a group owner can add members. If no user exists for the submitted email, the application creates one and adds it to the group.

## Path parameters

- `id` integer, required

## Response `201`

The request succeeded and returned the group member.

- object
  - `success` boolean
  - `data` Member — Group membership record.
    - `id` integer — Numeric group member ID..
    - `role` 1 | 2 | 3 — | ID | Name | Description | |:---|:-------|------------:| | 1 | ROLE_OWNER | Group administrator. | | 2 | ROLE_TEACHER | Teacher | | 3 | ROLE_STUDENT | Student |
    - `limit` integer, nullable — Maximum number of pages this member can check. `null` means no explicit member limit.
    - `created_at` integer — Timestamp in milliseconds when the user joined the group.
    - `user` User — User account summary.
      - `id` integer — Numeric user ID.
      - `name` string — User display name.
      - `email` string, email — User email address.
      - `created_at` integer — User creation timestamp in milliseconds.
      - `updated_at` integer — User update timestamp in milliseconds.
      - `is_blocked` boolean — Whether the user account is blocked.
      - `allowed_languages` string[] — Language codes the user can submit for checking.
      - `balance` Account — Balance counters for a user or group account.
        - `balance` integer, required — Available balance in pages. One page is 275 words.
        - `bonus` integer, required — Available bonus balance in pages. One page is 275 words.
        - `hold` integer, required — Balance on hold. This field is deprecated.
        - `hold_bonus` integer, required — Bonus balance on hold. This field is deprecated.
        - `ai_balance` integer, required — Available AI-check balance.
      - `balance_type` integer — User billing/balance type.
      - `avatar` string, nullable — URL of the user avatar image, when available.
      - `sale_role` integer, nullable — Internal sale role for the user, when assigned.
      - `ai_checks_enabled` boolean — Whether AI detection checks are enabled for this user.
      - `is_test` boolean — Whether this is a test account.
      - `is_guest` boolean — Whether this account is a guest account.
      - `is_change_password_needed` boolean — Whether the user must change an autogenerated password.
      - `is_email_verification_needed` boolean — Whether this user should complete email verification.
      - `orders` integer — Number of paid orders for the user.
      - `not_ai_orders` integer — Number of paid non-AI orders for the user.
      - `last_ai_order_paid_days_ago` integer, nullable — Days since the user's most recent paid AI order, or `null`.

## Other responses

- `400` — The request is invalid. Check required fields, field formats, and resource ownership.
- `403` — Authentication or authorization failed because the token is missing, invalid, blocked, or not allowed to access the resource.
- `404` — The requested resource was not found.

---

[API](https://skmtc.net/plagiarismcheck/apis/plagiarismcheck-org-api.md) · [All operations](https://skmtc.net/plagiarismcheck/apis/plagiarismcheck-org-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/plagiarismcheck/plagiarismcheck-org-api/versions/034b4999350e/schema)
