---
title: "Create School Contract"
method: POST
path: "/admin/schools/{school_id}/contracts"
tags: ["Admin - Schools"]
---

# Create School Contract

`POST /admin/schools/{school_id}/contracts`

## Path parameters

- `school_id` string, required — The ID of the school

## Request body

- SchoolContractCreateRequest
  - `contract_type` 'pilot' | 'paid', required
  - `start_date` string, date-time, required
  - `end_date` string, date-time, nullable
  - `billed_students` integer, nullable
  - `expected_teachers_count` integer, nullable
  - `price_per_student_monthly_eur` number, nullable
  - `free_months` integer, nullable
  - `owner_admin_id` string, nullable
  - `referent_name` string, nullable
  - `referent_email` string, nullable
  - `referent_role` string, nullable
  - `signed_document_date` string, date-time, nullable
  - `signed_document_url` string, nullable
  - `pennylane_url` string, nullable
  - `notes` string, nullable

## Response `200`

Successful Response

- SchoolContractResponse
  - `id` string, required
  - `school_id` string, required
  - `contract_type` 'pilot' | 'paid', required
  - `start_date` string, date-time, required
  - `end_date` string, date-time, nullable
  - `billed_students` integer, nullable
  - `expected_teachers_count` integer, nullable
  - `price_per_student_monthly_eur` number, nullable
  - `free_months` integer, nullable
  - `owner_admin_id` string, nullable
  - `owner_name` string, nullable
  - `referent_name` string, nullable
  - `referent_email` string, nullable
  - `referent_role` string, nullable
  - `signed_document_date` string, date-time, nullable
  - `signed_document_url` string, nullable
  - `pennylane_url` string, nullable
  - `notes` string, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `status` 'active' | 'upcoming' | 'ended', required
  - `gesture` SchoolContractGestureResponse
    - `id` string, required
    - `contract_id` string, required
    - `days` integer, required
    - `reason` string, required
    - `granted_by_admin_id` string, required
    - `granted_by_name` string, nullable
    - `previous_end_date` string, date-time, nullable
    - `new_end_date` string, date-time, nullable
    - `created_at` string, date-time, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/excellence-ai/apis/excellence-learning.md) · [All operations](https://skmtc.dev/excellence-ai/apis/excellence-learning/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/excellence-ai/excellence-learning/revisions/c407f3b5a05b/schema)
