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

# 기업 확인(KYB) 세션 PDF API

> Didit에서 완료된 기업 확인(KYB) 세션 하나의 PDF 보고서를 다운로드합니다. 법인 등기부 정보, 주요 인물, 실소유자, 문서, AML 및 검토 내용을 포함합니다.



KYB 세션 PDF 생성 API 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\`Download the PDF report of one finished Didit business verification (KYB) session.

Endpoint:
GET https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/businesses/{business_session_id}/pdf/

Authentication:
Use the x-api-key header with my Didit API key. A scoped key needs businesses: read and media: read; a key limited to some workflows or to approved sessions can't call this endpoint. application_id must be the application the key belongs to.

Goal:
\- Store an audit-ready KYB report for my compliance archive, or attach it to a case or regulator request.

Behavior:
\- business_session_id is the session_id of the KYB session.
\- The session must be "Approved", "Declined" or "In Review"; any other status returns 403.
\- The body is binary application/pdf, not JSON. Content-Disposition: attachment; filename=business_<business_session_id>.pdf.
\- The report covers company registry data, key people and beneficial owners, documents, AML results and the other workflow features, plus the session's tags and reviews. With white-label customization on, it uses my logo and privacy policy URL.
\- Rendered on every call: store the file instead of fetching it repeatedly.

Example call:
curl --fail -X GET "https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/businesses/c2d3e4f5-0617-4829-9a3b-4c5d6e7f8091/pdf/" \
-H "x-api-key: YOUR_API_KEY" \
\--output business-report.pdf

What to read from the response:
\- The PDF bytes. Do not parse the body as JSON.
\- Content-Disposition - the suggested file name.

Failure modes:
\- 401 - the API key has expired.
\- 403 - {"detail": "You can only generate a PDF for sessions in review, declined or approved."} when the session is not finished; {"detail": "Authentication credentials were not provided or are invalid."} for a missing key (a wrong, revoked or expired key gets 401); {"detail": "You do not have permission to perform this action."} for a key of another application; a scoped key without businesses: read or media: read; a key limited to workflows or approved sessions; a request from outside the key's IP list.
\- 404 - {"detail": "Business session not found."}
\- 429 - more than 600 GET requests per minute with this key.

Side effects: none. Not billed.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

붙여넣을 곳

[PDF 생성](https://docs.didit.me/ko/sessions-api/generate-pdf.md)에서도 KYB 보고서를 생성할 수 있습니다. 연동 방식에 맞는 것을 사용하십시오. 이 엔드포인트는 조직과 애플리케이션을 통해 세션을 지정하고, 다른 엔드포인트는 세션 ID만으로 세션을 지정합니다.> [!NOTE]
>
> 보고서는 세션이 `Approved`, `Declined` 또는 `In Review` 상태가 된 후에만 사용할 수 있습니다. 보고서를 요청하기 전에 `status.updated` [webhook](https://docs.didit.me/ko/integration/webhooks.md)을 기다리십시오.## 관련 문서- [PDF 생성](https://docs.didit.me/ko/sessions-api/generate-pdf.md)
- [PDF 및 CSV로 내보내기](https://docs.didit.me/ko/console/export-pdf-csv.md)
- [KYB 응답 스키마](https://docs.didit.me/ko/business-verification/response-schema.md)


## OpenAPI

````yaml ko/openapi-25.json GET /v3/organization/{organization_id}/application/{application_id}/businesses/{business_session_id}/pdf/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: 신분증 인증 API입니다. x-api-key 헤더로 인증합니다.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/businesses/{business_session_id}/pdf/:
    get:
      tags:
        - Businesses
      summary: 기업 세션 PDF 보고서 다운로드
      description: >-
        단일 기업 확인(KYB) 세션의 PDF 보고서를 렌더링합니다. 법인 등기부 데이터, 주요 인물 및 실소유자, 문서, AML 결과
        및 기타 워크플로 기능뿐만 아니라 세션의 태그 및 검토 활동이 포함됩니다. 화이트 라벨 맞춤 설정을 활성화하면 보고서에 귀사의
        로고와 개인정보 처리방침 URL이 표시됩니다. 본문은 JSON이 아닌 PDF 자체(`application/pdf`)입니다.


        세션 상태는 `Approved`, `Declined` 또는 `In Review`여야 합니다. 그 외의 모든 상태는 `403`을
        반환하므로 먼저 `status.updated`
        [webhook](https://docs.didit.me/ko/integration/webhooks)을 기다리십시오. 보고서는
        호출할 때마다 렌더링되며 비용은 청구되지 않으므로, 반복해서 가져오는 대신 파일을 저장해 두십시오. `GET
        /v3/session/{sessionId}/generate-pdf/`는 세션 ID만으로 동일한 종류의 보고서를 렌더링합니다.


        PDF 보고서는 미디어로 간주됩니다. 범위가 지정된 API 키에는 `businesses: read` 및 `media: read`
        권한이 필요하며, 특정 워크플로나 승인된 세션으로 제한된 키로는 이를 호출할 수 없습니다.
      operationId: get_business_session_pdf
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: 조직 UUID입니다.
          example: 11111111-2222-3333-4444-555555555555
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            애플리케이션 UUID입니다. API 키가 속한 애플리케이션이어야 합니다. 다른 애플리케이션에 사용된 키는 `403`을
            받습니다.
          example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
        - name: business_session_id
          in: path
          required: true
          description: >-
            세션 생성 시 반환된 기업 확인(KYB) 세션의 `session_id`입니다. 다른 애플리케이션의 세션인 경우 `404`를
            반환합니다.
          schema:
            type: string
            format: uuid
          example: 22222222-3333-4444-5555-666666666666
      responses:
        '200':
          description: 렌더링된 PDF로, 바이너리 `application/pdf` 형식으로 직접 반환됩니다.
          headers:
            Content-Disposition:
              description: 항상 `attachment; filename=business_{business_session_id}.pdf`입니다.
              schema:
                type: string
                example: >-
                  attachment;
                  filename=business_22222222-3333-4444-5555-666666666666.pdf
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        '401':
          description: >-
            API 키가 만료되었습니다. 만료일이 지정되어 생성된 키만 만료될 수 있으며, 해당 날짜 이후에는 이를 사용한 모든 요청에
            `401`이 반환됩니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            요청이 허용되지 않거나 세션이 완료되지 않았습니다. `detail`을 확인하세요. `Approved`, `Declined`
            또는 `In Review` 상태가 아닌 세션, API 키 누락(잘못되거나 취소되었거나 만료된 키는 `401` 수신), 해당
            키의 애플리케이션이 아닌 `application_id`, `media: read` 또는 `businesses: read`
            권한이 없는 스코프 제한 키, 워크플로 또는 승인된 세션으로 제한된 키, 또는 키의 IP 허용 목록 외부에서의 요청 등이
            해당됩니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Session not finished:
                  value:
                    detail: >-
                      You can only generate a PDF for sessions in review,
                      declined or approved.
                Missing or invalid key:
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Another application:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without media read:
                  value:
                    detail: This API key has no read access to media.
                Scoped key without businesses read:
                  value:
                    detail: This API key has no read access to companies.
                Key limited to workflows or approved sessions:
                  value:
                    detail: >-
                      This API key only reaches sessions inside its workflow or
                      status limits, so it can't use this endpoint.
                Outside the key's IP list:
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            애플리케이션에 이 ID를 가진 기업 세션이 존재하지 않습니다(생성된 적이 없거나, 삭제되었거나, 다른 애플리케이션의
            소유임). UUID가 아닌 값은 이 JSON 본문 대신 `404` HTML 페이지를 반환합니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not found:
                  value:
                    detail: Business session not found.
        '429':
          description: >-
            이 API 키로 분당 600건을 초과하는 GET 요청이 발생했습니다. `Retry-After`에 명시된 시간(초)만큼
            대기한 후 다시 시도하세요.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Throttled:
                  value:
                    detail: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
          headers:
            Retry-After:
              description: 현재 1분 기간이 초기화될 때까지 남은 시간(초)입니다.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: 이 예산에서 분당 허용되는 요청 수입니다.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: 현재 윈도우에 남은 요청 수입니다.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: 윈도우가 리셋되는 Unix 시간입니다.
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl --fail -X GET
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/businesses/22222222-3333-4444-5555-666666666666/pdf/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              --output business_report.pdf
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            client = Didit()

            content = client.businesses.generate_session_pdf(
                "22222222-3333-4444-5555-666666666666",
            )
            with open("download.pdf", "wb") as file:
                file.write(content)
        - lang: javascript
          label: Node.js
          source: >-
            import { writeFile } from "node:fs/promises";

            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            const didit = new Didit();


            const content = await
            didit.businesses.generateSessionPdf("22222222-3333-4444-5555-666666666666");

            await writeFile("download.pdf", Buffer.from(await
            content.arrayBuffer()));
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresp, err := client.Businesses.GenerateSessionPDF(ctx, \"22222222-3333-4444-5555-666666666666\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: >-
            import java.nio.file.Path;

            import me.didit.Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            client.businesses().generateSessionPdf("22222222-3333-4444-5555-666666666666")
                    .writeTo(Path.of("download.pdf"));
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            $didit = new DiditClient();


            $content =
            $didit->businesses->generateSessionPdf('22222222-3333-4444-5555-666666666666');

            $content->saveTo('download.pdf');
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            # and DIDIT_APPLICATION_ID.

            didit = Didit::Client.new


            content =
            didit.businesses.generate_session_pdf("22222222-3333-4444-5555-666666666666")

            File.binwrite("download.pdf", content)
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            using var client = new DiditClient();


            var content = await
            client.Businesses.GenerateSessionPdfAsync("22222222-3333-4444-5555-666666666666");

            await content.SaveToAsync("download.pdf");
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.

````

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