> ## 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.

# Perbarui Bisnis API: Entitas KYB Vendor

> Perbarui kolom Bisnis Didit (KYB) yang dapat diubah: nama tampilan, metadata, dan tag. Kolom identitas dari registri tidak dapat diubah. Bayar per panggilan.



Prompt Pembaruan Bisnis
        Salin prompt ke papan klip



      
      

\<pre>

\`Goal: Partial-update a Didit Business (KYB) entity by vendor_data.

Endpoint: PATCH https://verification.didit.me/v3/businesses/{vendor_data}/
Auth header: x-api-key: <DIDIT_API_KEY>
Content-Type: application/json

Path param:
\- vendor_data (string, REQUIRED) — free-form string, NOT a UUID. URL-encode.

Request body (PARTIAL — only included fields are touched; counters and session history are left alone):
\- display_name (string, nullable)
\- legal_name (string, nullable)
\- registration_number (string, nullable)
\- country_code (string, nullable) — ISO 3166-1 alpha-2.
\- region (string, nullable) — ISO 3166-2.
\- status (enum) — "ACTIVE" | "FLAGGED" | "BLOCKED" (VendorBusinessStatusChoices). Setting "BLOCKED" auto-adds vendor_data to the system blocklist.
\- metadata (object, nullable) — REPLACES existing metadata wholesale; merge client-side if you only want to add keys.
\- reason (string, optional, max 1000): why the status changed. Recorded on the status-change entry in the company's Activity in the Business Console, only when this update actually changes status. Webhooks do not carry it.

curl:
curl -X PATCH 'https://verification.didit.me/v3/businesses/company-123/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"display_name": "Acme", "metadata": {"tier": "enterprise"}}'

Response 200: full updated BusinessDetailItem (same shape as GET). See /reference/data-models.

Side effects:
\- Every edit is recorded in the company's activity (actor derived from the API key): a status change with reason, and a profile update when display_name, legal_name, registration_number, country_code or metadata change.
\- last_activity_at bumped to now().
\- Re-sending an unchanged body is safe.

Failure modes:
\- 400 — validation. Common: { "status": ["Invalid status. Valid options are: ACTIVE, FLAGGED, BLOCKED"] }, { "metadata": ["Metadata must be a JSON object."] }
\{ "reason": ["Ensure this field has no more than 1000 characters."] }
\- 401 — missing/invalid x-api-key.
\- 403: a scoped API key without businesses write. { "detail": "This API key has no write access to companies." }
\- 404 — vendor_data not found.
\- 429 — rate-limited.

Notes:
\- vendor_data in the URL cannot be changed via this endpoint.
\- For status-only flips, prefer the dedicated PATCH /v3/businesses/{vendor_data}/update-status/.
\- Overriding registry-derived fields is allowed but flagged in the audit log.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Tempel ke

## IkhtisarMemperbarui kolom yang dapat diubah pada [entitas bisnis](https://docs.didit.me/id/entities/businesses/overview.md). Kolom yang diisi dari pencarian di registri perusahaan (`legal_name`, `registration_number`, `country_code`) menjadi hanya-baca setelah sesi Verifikasi Bisnis (KYB) pertama yang disetujui.## Kapan digunakan- **Ubah nama**: tetapkan `display_name` yang lebih sesuai untuk tampilan internal.
- **Perbarui metadata**: pindahkan bisnis antar tingkat internal, tambahkan catatan internal, ubah tag.
- **Timpa data registri** (dengan hati-hati): penimpaan diterima tetapi ditandai di [log audit](https://docs.didit.me/id/console/audit-logs.md).## Catatan- `vendor_data` di URL tidak dapat diubah melalui endpoint ini.
- Mengirim webhook `business.data.updated` dengan array `changed_fields`.
- Setiap perubahan dicatat di **Aktivitas** perusahaan pada Business Console.
  Perubahan `status` dicatat beserta `reason` opsional (hingga 1000 karakter), dan perubahan pada `display_name`, `legal_name`, `registration_number`, `country_code` atau `metadata` dicatat sebagai pembaruan profil.
  Webhook `business.status.updated` tidak menyertakan `reason`.## IzinRahasia utama dan [kunci API](https://docs.didit.me/id/console/api-keys.md) dengan akses penuh selalu dapat memanggil endpoint ini.
Kunci dengan akses kustom memerlukan izin tulis **Perusahaan** (`businesses`).
Kunci yang dibatasi pada alur kerja tertentu atau pada sesi yang disetujui tidak dapat mengakses endpoint ini.[Peran dan izin](https://docs.didit.me/id/console/roles-permissions.md) Console menentukan apa yang dapat dilakukan anggota tim di Console. Keduanya tidak dievaluasi untuk permintaan kunci API.## Terkait- [Operasi bisnis](https://docs.didit.me/id/entities/businesses/operations.md)
- [Model data](https://docs.didit.me/id/entities/businesses/data-model.md)
- [Perbarui status](https://docs.didit.me/id/management-api/businesses/update-status.md)


## OpenAPI

````yaml id/openapi-25.json PATCH /v3/businesses/{vendor_data}/
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/businesses/{vendor_data}/:
    patch:
      tags:
        - Businesses
      summary: Perbarui bisnis
      description: >-
        Pembaruan parsial untuk bisnis: `display_name`, `legal_name`,
        `registration_number`, `country_code`, `status`, `metadata`. `metadata`
        menggantikan sepenuhnya. Mengatur `status` ke `BLOCKED` akan menambahkan
        `vendor_data` ke daftar blokir sistem; mengubahnya dari `BLOCKED` akan
        menghapus entri tersebut. Setiap pengeditan dicatat dalam aktivitas
        perusahaan: perubahan status dengan `reason` opsional, dan perubahan
        pada `display_name`, `legal_name`, `registration_number`,
        `country_code`, atau `metadata` sebagai pembaruan profil.
      operationId: update_business
      parameters:
        - name: vendor_data
          in: path
          required: true
          schema:
            type: string
          description: >-
            Pengidentifikasi unik Anda untuk bisnis (string bentuk bebas, BUKAN
            UUID).
          example: company-123
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                Body pembaruan parsial. Berikan hanya kolom yang ingin Anda
                ubah.
              properties:
                display_name:
                  type: string
                  nullable: true
                  description: >-
                    Nama tampilan yang mudah dipahami yang ditampilkan di konsol
                    (mengambil prioritas di atas `legal_name` untuk tampilan
                    antarmuka).
                legal_name:
                  type: string
                  nullable: true
                  description: Nama resmi menurut hukum dari registri atau entri manual.
                registration_number:
                  type: string
                  nullable: true
                  description: Nomor registrasi atau nomor pendirian perusahaan.
                country_code:
                  type: string
                  nullable: true
                  description: Negara pendirian (ISO 3166-1 alpha-2, misalnya `GB`, `US`).
                status:
                  type: string
                  enum:
                    - ACTIVE
                    - FLAGGED
                    - BLOCKED
                  description: >-
                    Status siklus hidup bisnis. Menyetel `BLOCKED` secara
                    otomatis menambahkan `vendor_data` ke daftar blokir sistem;
                    beralih dari `BLOCKED` menghapus entri daftar blokir
                    tersebut.
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    Objek JSON arbitrer yang Anda lampirkan ke bisnis.
                    **Menggantikan sepenuhnya** metadata yang ada saat pembaruan
                    — gabungkan di sisi klien jika Anda hanya ingin menambahkan
                    kunci.
                reason:
                  type: string
                  nullable: true
                  maxLength: 1000
                  description: >-
                    Alasan mengapa status berubah. Dicatat pada entri perubahan
                    status di **Activity** perusahaan di Business Console, hanya
                    jika status benar-benar berubah. Webhook tidak
                    menyertakannya.
            examples:
              Update name:
                summary: Perbarui nama tampilan
                value:
                  display_name: Acme Corp
              Flag for review:
                summary: Ubah status
                value:
                  status: FLAGGED
              Add metadata:
                summary: Ganti JSON metadata
                value:
                  metadata:
                    industry: fintech
                    risk_level: low
              Fix registry data:
                summary: Koreksi kolom yang diekstrak
                value:
                  legal_name: Acme Trading International Ltd
                  registration_number: '12345678'
                  country_code: GB
              Flag with reason:
                summary: Tandai bisnis dan catat alasannya
                value:
                  status: FLAGGED
                  reason: Ownership structure under review
      responses:
        '200':
          description: >-
            Bisnis diperbarui. Data bisnis lengkap yang telah diperbarui
            dikembalikan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessDetailItem'
              examples:
                Updated:
                  value:
                    didit_internal_id: a1b2c3d4-e5f6-4890-abcd-ef1234567890
                    vendor_data: company-123
                    display_name: Acme Corp
                    legal_name: Acme Trading Ltd
                    registration_number: '12345678'
                    country_code: GB
                    effective_name: Acme Corp
                    status: FLAGGED
                    session_count: 2
                    approved_count: 1
                    declined_count: 0
                    in_review_count: 1
                    features:
                      KYB: Approved
                    features_list:
                      - feature: KYB
                        status: Approved
                    last_session_at: '2026-03-15T10:30:00Z'
                    last_activity_at: '2026-03-15T10:30:00Z'
                    first_session_at: '2026-01-10T08:00:00Z'
                    tags:
                      - uuid: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
                        name: VIP
                        color: '#2567FF'
                    created_at: '2026-01-10T08:00:00Z'
                    metadata:
                      industry: fintech
                      risk_level: low
                    updated_at: '2026-03-15T10:30:00Z'
        '400':
          description: >-
            Body tidak valid: biasanya `status` yang tidak dikenal, `metadata`
            yang salah format, atau `reason` lebih dari 1000 karakter.
          content:
            application/json:
              examples:
                Bad status:
                  value:
                    status:
                      - >-
                        Invalid status. Valid options are: ACTIVE, FLAGGED,
                        BLOCKED
                Bad metadata:
                  value:
                    metadata:
                      - Metadata must be a JSON object.
                Reason too long:
                  value:
                    reason:
                      - Ensure this field has no more than 1000 characters.
        '403':
          description: >-
            Kunci API tidak ada, tidak valid, atau dicabut, atau kunci tersebut
            tidak dapat memperbarui bisnis untuk aplikasi ini. Kunci yang tidak
            ada mengembalikan `403`; kunci yang salah, dicabut, atau kedaluwarsa
            mengembalikan `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Tidak ada bisnis (yang belum dihapus) dengan `vendor_data` yang
            diberikan untuk aplikasi ini.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: >-
            Batas laju terlampaui; kurangi laju permintaan dan coba lagi setelah
            interval yang ditunjukkan dalam `Retry-After`.
          content:
            application/json:
              examples:
                Rate limited:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X PATCH
            'https://verification.didit.me/v3/businesses/company-123/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"display_name": "Acme Corp", "status": "FLAGGED"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.businesses.update(
                "company-123",
                display_name="Acme Corp",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.businesses.update("company-123", {
              display_name: "Acme Corp",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.Update(ctx, \"company-123\", didit.BusinessesUpdateParams{\n\tDisplayName: didit.String(\"Acme Corp\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.BusinessesUpdateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result = client.businesses().update("company-123",
            BusinessesUpdateParams.builder()
                    .displayName("Acme Corp")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->businesses->update('company-123', [
                'display_name' => 'Acme Corp',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.businesses.update(
              "company-123",
              display_name: "Acme Corp"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.Businesses.UpdateAsync("company-123", new
            BusinessesUpdateParams

            {
                DisplayName = "Acme Corp",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    BusinessDetailItem:
      type: object
      description: >-
        Detail bisnis lengkap. Memperluas BusinessListItem dengan metadata dan
        updated_at.
      allOf:
        - $ref: '#/components/schemas/BusinessListItem'
        - type: object
          properties:
            metadata:
              type: object
              description: >-
                JSON metadata kustom yang Anda lampirkan ke bisnis ini. Default
                adalah `{}`.
            updated_at:
              type: string
              format: date-time
    BusinessListItem:
      type: object
      description: Bisnis yang terverifikasi.
      properties:
        didit_internal_id:
          type: string
          format: uuid
          description: UUID internal yang stabil dari Didit untuk bisnis ini.
        vendor_data:
          type: string
          nullable: true
          description: >-
            Pengidentifikasi unik Anda untuk bisnis ini (diteruskan saat membuat
            sesi). Nilai ini dapat berupa null jika tidak ada pengidentifikasi
            vendor yang diberikan.
        display_name:
          type: string
          nullable: true
          description: Nama tampilan kustom yang Anda tetapkan
        legal_name:
          type: string
          nullable: true
          description: Nama resmi menurut hukum dari registri atau entri manual
        registration_number:
          type: string
          nullable: true
          description: Nomor registrasi atau nomor pendirian perusahaan
        country_code:
          type: string
          nullable: true
          description: Negara pendirian (ISO 3166-1 alpha-2, misalnya `GB`, `US`).
        effective_name:
          type: string
          nullable: true
          description: >-
            Nama terbaik yang tersedia: display_name jika disetel, selain itu
            legal_name
        status:
          type: string
          enum:
            - ACTIVE
            - FLAGGED
            - BLOCKED
          description: >-
            Status siklus hidup rekaman bisnis (BUKAN status sesi). `ACTIVE`
            adalah default, `FLAGGED` menandainya untuk perhatian manual,
            `BLOCKED` mencegah sesi baru untuk `vendor_data` ini.
        session_count:
          type: integer
          description: Jumlah total sesi verifikasi untuk bisnis ini
        approved_count:
          type: integer
          description: Jumlah sesi yang disetujui
        declined_count:
          type: integer
          description: Jumlah sesi yang ditolak
        in_review_count:
          type: integer
          description: Jumlah sesi dalam peninjauan
        features:
          type: object
          description: >-
            Status per-fitur agregat di semua sesi KYB bisnis ini. Saat ini
            satu-satunya kunci adalah `KYB` (status pemeriksaan perusahaan di
            registri). Nilai yang memungkinkan: `Approved`, `Declined`, `In
            Review`, `Not Finished`, `Resub Requested`.
        features_list:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
              status:
                type: string
          description: >-
            Data yang sama dengan `features`, sebagai array berurutan dari objek
            `{feature, status}`.
        last_session_at:
          type: string
          format: date-time
          nullable: true
          description: Cap waktu sesi terbaru
        first_session_at:
          type: string
          format: date-time
          nullable: true
          description: Cap waktu sesi pertama
        last_activity_at:
          type: string
          format: date-time
          nullable: true
          description: Cap waktu aktivitas terbaru (perubahan status, pembaruan sesi, dll.)
        tags:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              color:
                type: string
          description: Tag yang ditetapkan untuk bisnis ini
        created_at:
          type: string
          format: date-time
  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.