> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Draf Blueprint Kasus dengan AI melalui API

> Buat proposal blueprint kasus Didit dari prompt tanpa menyimpannya, tinjau tahapan dan jenis kasus, lalu simpan kebijakan pilihan Anda terpisah.

API draf AI blueprint milik Didit mengubah deskripsi kebijakan menjadi usulan kebijakan peninjauan yang belum disimpan.
Lakukan autentikasi menggunakan `x-api-key` dan izin `write:cases` untuk aplikasi.

## Buat dan tinjau proposal

Kirim `prompt` yang tidak kosong dengan panjang paling banyak 4000 karakter. Respons berupa `200` dengan objek `draft`, bukan blueprint tersimpan atau UUID.

```json theme={null}
{"prompt": "Draft an AML review policy with triage and evidence review stages."}
```

Proposal dapat berisi `name`, `description`, `applies_to`, `content_config`, `require_resolution_note`, `assignment_method`, `max_active_cases`, dan `default_deadline_hours`. Kolom tertentu mungkin tidak ada, jadi tinjau respons sebelum menggunakannya. Proposal tingkat atas tidak menyertakan daftar penerima tugas, pengaturan persetujuan, maupun referensi routing.

Pilih sendiri penerima tugas, tim, persetujuan, dan routing sebelum menyimpan. Jika langkah yang dihasilkan berisi `worked_by`, nilai tersebut divalidasi di aplikasi sebagai UUID tim peninjau yang aktif. Jangan anggap proposal sebagai penugasan yang sudah disetujui.

Gunakan [Buat blueprint kasus](https://docs.didit.me/id/management-api/case-blueprints/create.md) setelah peninjauan, termasuk `name` yang wajib diisi dan `assignee_pool` yang tidak kosong. Membuat proposal tidak menyimpan draf kebijakan, mempublikasikan kebijakan, atau mengubah kasus yang sudah ada. [Siklus hidup draf tersimpan dan publikasi](https://docs.didit.me/id/console/case-management/blueprints.md#simpan-dan-publikasikan-perubahan-kebijakan) terpisah dari proses ini.

## Kesalahan

| Status | Arti |
| - | - |
| `400` | Prompt tidak ada, kosong, atau terlalu panjang |
| `401` / `403` | Autentikasi atau izin tidak ada |
| `404` | Aplikasi tidak ditemukan |
| `503` | Pembuatan gagal atau menghasilkan proposal yang tidak lolos validasi; coba lagi nanti |

Kegagalan pembuatan mengembalikan:

```json theme={null}
{"detail": "A blueprint draft could not be generated. Please try again."}
```

## Terkait

* [Daftar blueprint kasus](https://docs.didit.me/id/management-api/case-blueprints/list.md)
* [Pengaturan blueprint dan kebijakan peninjauan](https://docs.didit.me/id/console/case-management/blueprints.md)


## OpenAPI

````yaml id/openapi-25.json POST /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/ai-draft/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/ai-draft/:
    post:
      tags:
        - Case Blueprints
      summary: Susun draf cetak biru kasus dengan AI
      description: >-
        Membuat proposal blueprint yang belum disimpan. Memerlukan write:cases.
        Mengembalikan objek draf, bukan UUID blueprint; tidak ada blueprint atau
        draf kebijakan tersimpan yang dibuat. Tinjau proposal, pilih penanggung
        jawab, tim, persetujuan, atau perutean apa pun, lalu buat atau perbarui
        blueprint secara terpisah. Konten yang dihasilkan tidak valid atau
        kegagalan pembuatan mengembalikan 503. Lihat [draf AI
        blueprint](/id/management-api/case-blueprints/ai-draft).
      operationId: draft_case_blueprint
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID organisasi.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID aplikasi.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaseBlueprintAiDraftRequest'
            example:
              prompt: >-
                Draft an AML review policy with triage and evidence review
                stages.
      responses:
        '200':
          description: Usulan belum disimpan. Tidak ada status yang diubah.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseBlueprintAiDraftResponse'
              example:
                draft:
                  name: AML review
                  applies_to:
                    - AML
                  require_resolution_note: true
                  content_config:
                    stages:
                      items:
                        - key: triage
                          label: Triage
                          sla_hours: 24
        '400':
          description: prompt hilang, kosong, atau lebih dari 4000 karakter.
        '401':
          description: Autentikasi diperlukan.
        '403':
          description: Izin write:cases diperlukan.
        '404':
          description: Aplikasi tidak ditemukan.
        '503':
          description: >-
            Pembuatan gagal atau menghasilkan proposal yang tidak valid. Coba
            lagi nanti.
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    type: string
              example:
                detail: A blueprint draft could not be generated. Please try again.
      security:
        - ApiKeyAuth: []
      x-codeSamples: []
components:
  schemas:
    CaseBlueprintAiDraftRequest:
      type: object
      required:
        - prompt
      properties:
        prompt:
          type: string
          minLength: 1
          maxLength: 4000
          description: Deskripsi tidak kosong dari kebijakan peninjauan yang diusulkan.
          example: Draft an AML review policy with triage and evidence review stages.
    CaseBlueprintAiDraftResponse:
      type: object
      required:
        - draft
      properties:
        draft:
          $ref: '#/components/schemas/CaseBlueprintAiDraft'
    CaseBlueprintAiDraft:
      type: object
      additionalProperties: false
      description: >-
        Usulan yang belum disimpan dan telah divalidasi. Kolom bersifat
        opsional; tinjau hasilnya dan pilih penerima tugas, tim, serta perutean
        sebelum menyimpan.
      properties:
        name:
          type: string
          maxLength: 24
          description: Maksimal 24 karakter, misalnya "investigasi AML".
        description:
          type: string
          nullable: true
        content_config:
          $ref: '#/components/schemas/CaseContentConfig'
        require_resolution_note:
          type: boolean
        assignment_method:
          type: string
          enum:
            - MANUAL
            - AUTOMATIC
        max_active_cases:
          type: integer
          nullable: true
          minimum: 1
          description: >-
            Ambang batas mode otomatis: "kurang dari N kasus cetak biru ini yang
            ditugaskan".
        default_deadline_hours:
          type: integer
          nullable: true
          minimum: 1
          maximum: 8760
          description: >-
            Batas waktu default untuk kasus yang baru dibuka. Batas waktu kasus
            yang sudah ada tidak berubah.
        applies_to:
          $ref: '#/components/schemas/CaseBlueprintAppliesTo'
    CaseContentConfig:
      type: object
      description: >-
        Bagian konten kasus dan tahap peninjauan opsional. Bagian atau kunci
        yang tidak dikenal akan ditolak. Kasus menyimpan snapshot kebijakan yang
        diterima saat dibuka; perubahan blueprint berikutnya tidak menulis ulang
        snapshot tersebut.
      properties:
        checklist:
          type: object
          properties:
            enabled:
              type: boolean
            optional:
              type: boolean
              description: >-
                Jika true, kasus dapat diselesaikan dengan item daftar periksa
                yang belum lengkap.
            items:
              type: array
              items:
                type: object
                properties:
                  label:
                    type: string
                    maxLength: 255
                  order:
                    type: integer
        aml_control:
          type: object
          properties:
            enabled:
              type: boolean
            financial:
              type: boolean
            identity:
              type: boolean
        identity:
          type: object
          properties:
            enabled:
              type: boolean
            personal_information:
              type: boolean
            applicant_tags:
              type: boolean
            contact_information:
              type: boolean
            risk_overview:
              type: boolean
            poi_documents:
              type: boolean
            poa_documents:
              type: boolean
        verifications:
          type: object
          properties:
            enabled:
              type: boolean
            summary:
              type: boolean
        reporting:
          type: object
          properties:
            enabled:
              type: boolean
            fiu_reports:
              type: boolean
        financial:
          type: object
          properties:
            enabled:
              type: boolean
            payment_methods:
              type: boolean
            transactions:
              type: boolean
        stages:
          type: object
          additionalProperties: false
          description: >-
            Tahap peninjauan berurutan. Jika dihilangkan atau kosong, digunakan
            tahap default Triase, Peninjauan bukti, dan Keputusan.
          properties:
            items:
              type: array
              maxItems: 10
              items:
                $ref: '#/components/schemas/CaseBlueprintStage'
              description: >-
                Maksimal sepuluh tahap dengan kunci yang berbeda. Menyelesaikan
                kasus adalah perubahan status, bukan tahap.
    CaseBlueprintAppliesTo:
      type: array
      maxItems: 6
      items:
        type: string
        enum:
          - GENERAL
          - VERIFICATION_REVIEW
          - BUSINESS_REVIEW
          - AML
          - TRANSACTION_MONITORING
          - DUPLICATES
      description: >-
        Jenis kasus yang dijelaskan blueprint ini. Opsional saat membuat dan
        memperbarui; blueprint baru secara default berisi daftar kosong.
        Disimpan dalam snapshot kebijakan kasus yang diterima.
      example:
        - AML
    CaseBlueprintStage:
      type: object
      additionalProperties: false
      required:
        - label
      properties:
        key:
          type: string
          pattern: ^[a-z0-9_]{1,64}$
          description: >-
            Unik dalam kebijakan. Hilangkan untuk menurunkan dari label. Kunci
            yang diselesaikan dicadangkan.
          example: triage
        label:
          type: string
          minLength: 1
          maxLength: 64
          description: Label tahap yang tidak kosong.
          example: Triage
        sla_hours:
          type: integer
          minimum: 1
          maximum: 8760
          nullable: true
          description: SLA tahap dalam jam, atau null jika tidak ada SLA.
          example: 24
        worked_by:
          type: string
          format: uuid
          nullable: true
          description: >-
            UUID tim peninjauan opsional. Nilai non-null harus mengidentifikasi
            tim aktif dalam aplikasi ini. Hilangkan atau gunakan null jika tidak
            ada tim tahap.
          example: a0000000-0000-4000-8000-000000000001
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.