---
title: "Human-approve and submit for network review"
method: POST
path: "/v1/telephony/compliance-cases/{id}/submit"
tags: ["Telephony"]
---

# Human-approve and submit for network review

`POST /v1/telephony/compliance-cases/{id}/submit`

## Request

- Base URL: `https://api.pyai.com`
- URL: `https://api.pyai.com/v1/telephony/compliance-cases/{id}/submit`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Submits for network review only after all evidence, confidence, matching, malware, and attestation gates pass and a human approver is named. Requires `Idempotency-Key`.

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string, required

## Request body

- object
  - `approved_by` string, required

## Response `200`

Submitted

- NumberComplianceCase
  - `id` string, required
  - `object` 'telephony.compliance_case', required
  - `project_id` string, required
  - `kind` 'new_number' | 'port_in', required
  - `country` 'US' | 'CA' | 'IN' | 'GB' | 'AU', required
  - `number_type` string
  - `capabilities` string[]
  - `use_case` string
  - `network_status` string
  - `state` 'collecting_evidence' | 'extracting' | 'needs_review' | 'ready_for_submission' | 'submitted' | 'cancelled', required
  - `continuation_reason` string, nullable
  - `terminal_reason` 'network_review_submitted' | 'cancelled_by_customer' | 'null', nullable
  - `rules_snapshot` object, required: Immutable rules, source identifiers, thresholds, retry caps, parallelism, wall-clock, cost, and retention configuration frozen when the case started.
    - `available` boolean
    - `registry_version` string
    - `source_ids` string[]
    - `frozen_at` integer
    - `config` object
  - `document_requests` object[], required
    - `id` string
    - `document_type` string
    - `label` string
    - `required` boolean
    - `accepted_mime_types` string[]
    - `max_bytes` integer
  - `attestation_requests` object[]
    - `id` string
    - `text` string
    - `required` boolean
  - `uploads` object[], required
    - `id` string
    - `document_request_id` string
    - `object_ref` string: Opaque object reference.
    - `generation` string, nullable
    - `file_name` string
    - `mime_type` string
    - `size_bytes` integer
    - `sha256` string
    - `malware_status` 'pending' | 'clean' | 'infected' | 'scan_failed'
    - `uploaded_at` integer
    - `retention_delete_at` integer
  - `extractions` object[], required: Terminal processing attempts. Extracted personal values are masked in API views.
    - `id` string
    - `upload_id` string
    - `processing_profile` 'standard'
    - `status` 'succeeded' | 'failed' | 'cancelled'
    - `failure_reason` string, nullable
    - `attempts` integer
    - `fields` object[]
      - `field` string
      - `value` string: Extracted value; personal values are masked.
      - `confidence` number
      - `provenance` object
      - `pii_class` string
      - `redacted` boolean
    - `cost_micros` integer
    - `model_version` string, nullable
    - `latency_ms` integer
    - `started_at` integer
    - `completed_at` integer
  - `corrections` object[]: Correction audit metadata. Corrected PII values are intentionally omitted from API views.
  - `matches` object[]
  - `attestations` object[]
  - `timeline` object[], required
  - `created_at` integer
  - `updated_at` integer
  - `retention_delete_at` integer
  - `version` integer, required

## Other responses

- `409`: Blocking gate or capability is unresolved.

---

[API](https://skmtc.dev/pyai/apis/pyai-api.md) · [All operations](https://skmtc.dev/pyai/apis/pyai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pyai/apis/pyai-api/revisions/271a1539185b?raw)
