# 기업 재무정보



법인등록번호와 사업연도로 요약재무제표·재무상태표·손익계산서를 한 번에 받습니다. 부채비율·영업이익률·순이익률·ROA·ROE와 전년 대비 성장률을 함께 계산해 주므로 재무 분석·신용 검토·투자 검토 자료로 바로 쓸 수 있습니다.



인증: Authorization: Bearer $APICK_API_KEY

본문 있는 REST 요청: multipart/form-data. GET 본문 및 MCP JSON-RPC 규격은 해당 명세를 따릅니다.

인증키는 서버에 보관하세요. 모든 예제는 정적 자료입니다.



## POST /rest/corp_finance 응답 필드

- `data` (object): 요청 처리 결과 묶음입니다. 조회한 값·작업 상태·오류 설명이 이 안에 들어 있으며, 실제 하위 필드 구성은 서비스마다 다릅니다. 값이 없으면 null·빈 배열·필드 생략 중 해당 서비스의 규칙을 따릅니다.

- `data.company` (object): 'company' 관련 값을 묶은 객체입니다. 하위 필드에 세부 값이 들어 있으며, 자료가 없으면 빈 객체이거나 생략됩니다.

- `data.company.crno` (string): 조회한 법인등록번호 13자리(숫자만)입니다. 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요.

- `data.company.bizYear` (string): 실제로 조회된 사업연도(YYYY)입니다. bizYear를 생략했다면 자동 선택된 연도입니다.

- `data.company.currency` (string): 금액 통화 코드입니다. 대부분 KRW(원)이며, 다른 값이면 금액을 그 통화로 해석하세요.

- `data.summary` (array): 공고의 짧은 요약입니다. 본문 전체는 description_html에서 확인하세요. null 허용.

- `data.summary[].scope` (string): consolidated(연결)·separate(별도)·other(구분 불명) 중 하나입니다.

- `data.summary[].scopeName` (string): 구분 이름입니다. 예: 연결요약재무제표, 별도요약재무제표 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요.

- `data.summary[].baseDate` (string): 결산 기준일(YYYY-MM-DD)입니다. 12월 결산이 아니면 연말이 아닐 수 있습니다.

- `data.summary[].bizYear` (string): 그 행의 사업연도(YYYY)입니다. 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요.

- `data.summary[].currency` (string): 그 행의 금액 통화 코드입니다. 가격의 통화 코드입니다. 예: KRW, USD.

- `data.summary[].revenue` (integer): 매출액(원)입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.summary[].operatingProfit` (integer): 영업이익(원)입니다. 손실이면 음수입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.summary[].profitBeforeTax` (integer): 법인세비용차감전순이익(원)입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.summary[].netIncome` (integer): 당기순이익(원)입니다. 손실이면 음수입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.summary[].totalAssets` (integer): 자산총계(원)입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.summary[].totalLiabilities` (integer): 부채총계(원)입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.summary[].totalEquity` (integer): 자본총계(원)입니다. 자본잠식이면 음수일 수 있습니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.summary[].capitalStock` (integer): 자본금(원)입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.balance` (array): 재무상태표 계정과목 목록입니다. 계정마다 한 행이며 연결·별도가 섞여 오면 scope로 나눕니다.

- `data.balance[].scope` (string): 그 계정이 속한 구분입니다. summary[].scope와 같은 값을 씁니다.

- `data.balance[].accountId` (string): 계정과목 식별자입니다. 회사·연도가 달라도 같은 계정이면 같은 값이므로 비교·집계 키로 씁니다.

- `data.balance[].accountName` (string): 계정과목 이름입니다. 예: 자산총계, 유동부채 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요.

- `data.balance[].current` (integer): 당기(조회한 사업연도) 금액(원)입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.balance[].previous` (integer): 전기(직전 연도) 금액(원)입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.balance[].previous2` (integer): 전전기(2년 전) 금액(원)입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.balance[].quarter` (integer): 분기 금액(원)입니다. 연간 재무제표에서는 보통 0입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.balance[].quarterEnd` (integer): 분기말 누적 금액(원)입니다. 연간 재무제표에서는 보통 0입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.balance[].currency` (string): 가격의 통화 코드입니다. 예: KRW, USD. 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요.

- `data.income` (array): 손익계산서 계정과목 목록입니다. 필드 구성은 balance[]와 같습니다.

- `data.income[].scope` (string): 'scope' 문자열 값입니다. 값이 없으면 빈 문자열이거나 필드가 생략됩니다.

- `data.income[].accountId` (string): 'accountId' 문자열 값입니다. 값이 없으면 빈 문자열이거나 필드가 생략됩니다.

- `data.income[].accountName` (string): 'accountName' 문자열 값입니다. 값이 없으면 빈 문자열이거나 필드가 생략됩니다.

- `data.income[].current` (integer): 'current' 수치 값입니다. 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.income[].previous` (integer): 'previous' 수치 값입니다. 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.income[].previous2` (integer): 'previous2' 수치 값입니다. 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.income[].quarter` (integer): 'quarter' 수치 값입니다. 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.income[].quarterEnd` (integer): 'quarterEnd' 수치 값입니다. 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `data.income[].currency` (string): 가격의 통화 코드입니다. 예: KRW, USD. 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요.

- `data.metrics` (object): 재무비율·성장률입니다. summary[]가 비어 있으면(type=balance·income) null입니다. null 허용.

- `data.metrics.scope` (string): 비율 계산에 쓴 구분입니다. 연결이 있으면 consolidated, 없으면 첫 행의 구분입니다.

- `data.metrics.currency` (string): 비율 계산에 쓴 재무제표의 통화 코드입니다. 가격의 통화 코드입니다. 예: KRW, USD.

- `data.metrics.debtRatio` (number): 부채비율(%) = 총부채 ÷ 총자본 × 100. 총자본이 0 이하이면 null입니다. null 허용.

- `data.metrics.operatingMargin` (number): 영업이익률(%) = 영업이익 ÷ 매출액 × 100. 매출액이 0 이하이면 null입니다. null 허용.

- `data.metrics.netMargin` (number): 순이익률(%) = 당기순이익 ÷ 매출액 × 100. 매출액이 0 이하이면 null입니다. null 허용.

- `data.metrics.roa` (number): 총자산이익률(%) = 당기순이익 ÷ 총자산 × 100. 총자산이 0 이하이면 null입니다. null 허용.

- `data.metrics.roe` (number): 자기자본이익률(%) = 당기순이익 ÷ 총자본 × 100. 총자본이 0 이하이면 null입니다. null 허용.

- `data.metrics.revenueGrowth` (number): 매출액 성장률(%) = (당기 − 전기) ÷ 전기 × 100. 전년 자료가 없거나 전기 값이 0 이하이면 null입니다. null 허용.

- `data.metrics.operatingProfitGrowth` (number): 영업이익 성장률(%)입니다. 전기 영업이익이 손실(0 이하)이면 null입니다. null 허용.

- `data.metrics.netIncomeGrowth` (number): 당기순이익 성장률(%)입니다. 전기 순이익이 손실(0 이하)이면 null입니다. null 허용.

- `data.count` (integer): summary[]·balance[]·income[] 행 수의 합입니다. 숫자로 오며, 단위·범위는 같은 응답의 다른 필드나 이 문서의 설명을 확인하세요.

- `api` (object): API 호출 메타데이터입니다. 이번 요청의 서버 처리 성공 여부(api.success), 실제 차감 포인트(api.cost), 결제 기록 ID(api.pl_id)를 담습니다. 처리 시간(api.ms)은 응답에 포함된 경우에만 제공됩니다. 업무 결과는 data에서 확인합니다.

- `api.cost` (integer): 이번 호출에서 실제로 차감된 포인트입니다. 유료 성공 응답에서만 단가만큼 차감되며, 실패·무료 조회·같은 요청의 멱등 재전송은 0입니다. 화면의 표시 단가와 실제 차감액이 다를 수 있으므로 정산은 이 값을 기준으로 합니다.

- `api.success` (boolean): API 서버가 이번 요청을 정상 처리했는지 여부입니다. true여도 업무 결과가 실패일 수 있으므로 data.success·data.status와 함께 판단합니다. 인증 실패·잘못된 입력·서버 오류 응답에서는 false입니다.

- `api.ms` (integer): 서버가 요청을 받아 응답 본문을 만들기까지 걸린 처리 시간(밀리초)입니다. 네트워크 왕복 시간과 클라이언트 대기 시간은 포함되지 않습니다.

## API 요청: POST /rest/corp_finance



### 입력

- `crno` (string, 필수): 법인등록번호 (13자리, 하이픈 없이) 문자열로 보내며, 빼거나 빈 값으로 보내면 요청이 거부됩니다.

- `bizYear` (string, 선택): 사업연도 (YYYY, 생략하면 가장 최근 연도) 문자열로 보내며, 생략하면 서버 기본값이 적용되거나 해당 조건이 해제됩니다.

- `type` (string, 선택): 조회 항목 (기본 all=통합) 문자열로 보내며, 생략하면 서버 기본값이 적용되거나 해당 조건이 해제됩니다. 가능한 값은 4가지입니다. all = all 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. summary = summary 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. balance = balance 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. income = income 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. 허용값: all, summary, balance, income

- `scope` (string, 선택): 연결·별도 구분 (기본 all) 문자열로 보내며, 생략하면 서버 기본값이 적용되거나 해당 조건이 해제됩니다. 가능한 값은 3가지입니다. all = all 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. consolidated = consolidated 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. separate = separate 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. 허용값: all, consolidated, separate



### 응답 명세

```json

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "company": {
          "type": "object",
          "properties": {
            "crno": {
              "type": "string",
              "description": "조회한 법인등록번호 13자리(숫자만)입니다."
            },
            "bizYear": {
              "type": "string",
              "description": "실제로 조회된 사업연도(YYYY)입니다. bizYear를 생략했다면 자동 선택된 연도입니다."
            },
            "currency": {
              "type": "string",
              "description": "금액 통화 코드입니다. 대부분 KRW(원)이며, 다른 값이면 금액을 그 통화로 해석하세요."
            }
          }
        },
        "summary": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "scope": {
                "type": "string",
                "description": "consolidated(연결)·separate(별도)·other(구분 불명) 중 하나입니다."
              },
              "scopeName": {
                "type": "string",
                "description": "구분 이름입니다. 예: 연결요약재무제표, 별도요약재무제표"
              },
              "baseDate": {
                "type": "string",
                "description": "결산 기준일(YYYY-MM-DD)입니다. 12월 결산이 아니면 연말이 아닐 수 있습니다."
              },
              "bizYear": {
                "type": "string",
                "description": "그 행의 사업연도(YYYY)입니다."
              },
              "currency": {
                "type": "string",
                "description": "그 행의 금액 통화 코드입니다."
              },
              "revenue": {
                "type": "integer",
                "description": "매출액(원)입니다."
              },
              "operatingProfit": {
                "type": "integer",
                "description": "영업이익(원)입니다. 손실이면 음수입니다."
              },
              "profitBeforeTax": {
                "type": "integer",
                "description": "법인세비용차감전순이익(원)입니다."
              },
              "netIncome": {
                "type": "integer",
                "description": "당기순이익(원)입니다. 손실이면 음수입니다."
              },
              "totalAssets": {
                "type": "integer",
                "description": "자산총계(원)입니다."
              },
              "totalLiabilities": {
                "type": "integer",
                "description": "부채총계(원)입니다."
              },
              "totalEquity": {
                "type": "integer",
                "description": "자본총계(원)입니다. 자본잠식이면 음수일 수 있습니다."
              },
              "capitalStock": {
                "type": "integer",
                "description": "자본금(원)입니다."
              }
            }
          },
          "description": "요약재무제표입니다. 연결·별도마다 한 행씩 옵니다. 금액 필드는 모두 원 단위 숫자이며 값이 없으면 null입니다.",
          "nullable": true
        },
        "balance": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "scope": {
                "type": "string",
                "description": "그 계정이 속한 구분입니다. summary[].scope와 같은 값을 씁니다."
              },
              "accountId": {
                "type": "string",
                "description": "계정과목 식별자입니다. 회사·연도가 달라도 같은 계정이면 같은 값이므로 비교·집계 키로 씁니다."
              },
              "accountName": {
                "type": "string",
                "description": "계정과목 이름입니다. 예: 자산총계, 유동부채"
              },
              "current": {
                "type": "integer",
                "description": "당기(조회한 사업연도) 금액(원)입니다."
              },
              "previous": {
                "type": "integer",
                "description": "전기(직전 연도) 금액(원)입니다."
              },
              "previous2": {
                "type": "integer",
                "description": "전전기(2년 전) 금액(원)입니다."
              },
              "quarter": {
                "type": "integer",
                "description": "분기 금액(원)입니다. 연간 재무제표에서는 보통 0입니다."
              },
              "quarterEnd": {
                "type": "integer",
                "description": "분기말 누적 금액(원)입니다. 연간 재무제표에서는 보통 0입니다."
              },
              "currency": {
                "type": "string"
              }
            }
          },
          "description": "재무상태표 계정과목 목록입니다. 계정마다 한 행이며 연결·별도가 섞여 오면 scope로 나눕니다."
        },
        "income": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "scope": {
                "type": "string"
              },
              "accountId": {
                "type": "string"
              },
              "accountName": {
                "type": "string"
              },
              "current": {
                "type": "integer"
              },
              "previous": {
                "type": "integer"
              },
              "previous2": {
                "type": "integer"
              },
              "quarter": {
                "type": "integer"
              },
              "quarterEnd": {
                "type": "integer"
              },
              "currency": {
                "type": "string"
              }
            }
          },
          "description": "손익계산서 계정과목 목록입니다. 필드 구성은 balance[]와 같습니다."
        },
        "metrics": {
          "type": "object",
          "properties": {
            "scope": {
              "type": "string",
              "description": "비율 계산에 쓴 구분입니다. 연결이 있으면 consolidated, 없으면 첫 행의 구분입니다."
            },
            "currency": {
              "type": "string",
              "description": "비율 계산에 쓴 재무제표의 통화 코드입니다."
            },
            "debtRatio": {
              "type": "number",
              "description": "부채비율(%) = 총부채 ÷ 총자본 × 100. 총자본이 0 이하이면 null입니다.",
              "nullable": true
            },
            "operatingMargin": {
              "type": "number",
              "description": "영업이익률(%) = 영업이익 ÷ 매출액 × 100. 매출액이 0 이하이면 null입니다.",
              "nullable": true
            },
            "netMargin": {
              "type": "number",
              "description": "순이익률(%) = 당기순이익 ÷ 매출액 × 100. 매출액이 0 이하이면 null입니다.",
              "nullable": true
            },
            "roa": {
              "type": "number",
              "description": "총자산이익률(%) = 당기순이익 ÷ 총자산 × 100. 총자산이 0 이하이면 null입니다.",
              "nullable": true
            },
            "roe": {
              "type": "number",
              "description": "자기자본이익률(%) = 당기순이익 ÷ 총자본 × 100. 총자본이 0 이하이면 null입니다.",
              "nullable": true
            },
            "revenueGrowth": {
              "type": "number",
              "description": "매출액 성장률(%) = (당기 − 전기) ÷ 전기 × 100. 전년 자료가 없거나 전기 값이 0 이하이면 null입니다.",
              "nullable": true
            },
            "operatingProfitGrowth": {
              "type": "number",
              "description": "영업이익 성장률(%)입니다. 전기 영업이익이 손실(0 이하)이면 null입니다.",
              "nullable": true
            },
            "netIncomeGrowth": {
              "type": "number",
              "description": "당기순이익 성장률(%)입니다. 전기 순이익이 손실(0 이하)이면 null입니다.",
              "nullable": true
            }
          },
          "description": "재무비율·성장률입니다. summary[]가 비어 있으면(type=balance·income) null입니다.",
          "nullable": true
        },
        "count": {
          "type": "integer",
          "description": "summary[]·balance[]·income[] 행 수의 합입니다."
        }
      }
    },
    "api": {
      "type": "object",
      "properties": {
        "cost": {
          "type": "integer",
          "description": "차감된 포인트입니다. 실패하거나 결과가 없으면 0입니다."
        },
        "success": {
          "type": "boolean"
        },
        "ms": {
          "type": "integer",
          "description": "처리 시간(밀리초)입니다."
        }
      }
    }
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "company": {
      "crno": "1100000000001",
      "bizYear": "2024",
      "currency": "KRW"
    },
    "summary": [
      {
        "scope": "consolidated",
        "scopeName": "연결요약재무제표",
        "baseDate": "2024-12-31",
        "bizYear": "2024",
        "currency": "KRW",
        "revenue": 300000000000,
        "operatingProfit": 25000000000,
        "profitBeforeTax": 21000000000,
        "netIncome": 16000000000,
        "totalAssets": 420000000000,
        "totalLiabilities": 150000000000,
        "totalEquity": 270000000000,
        "capitalStock": 5000000000
      }
    ],
    "balance": [
      {
        "scope": "consolidated",
        "accountId": "ACCT_TOTAL_ASSETS",
        "accountName": "자산총계",
        "current": 420000000000,
        "previous": 390000000000,
        "previous2": 360000000000,
        "quarter": 0,
        "quarterEnd": 0,
        "currency": "KRW"
      }
    ],
    "income": [
      {
        "scope": "consolidated",
        "accountId": "ACCT_OPERATING_PROFIT",
        "accountName": "영업이익",
        "current": 25000000000,
        "previous": 22000000000,
        "previous2": 19000000000,
        "quarter": 0,
        "quarterEnd": 0,
        "currency": "KRW"
      }
    ],
    "metrics": {
      "scope": "consolidated",
      "currency": "KRW",
      "debtRatio": 55.56,
      "operatingMargin": 8.33,
      "netMargin": 5.33,
      "roa": 3.81,
      "roe": 5.93,
      "revenueGrowth": 7.14,
      "operatingProfitGrowth": 13.64,
      "netIncomeGrowth": 9.59
    },
    "count": 3
  },
  "api": {
    "cost": 50,
    "success": true,
    "ms": 880
  }
}

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/corp_finance' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'crno=1100000000001' \
  --form-string 'bizYear=2024' \
  --form-string 'type=all' \
  --form-string 'scope=all'

```

### Node.js (서버 ESM)

```javascript

const form = new FormData();
form.append("crno", "1100000000001");
form.append("bizYear", "2024");
form.append("type", "all");
form.append("scope", "all");
const response = await fetch("https://apick.app/rest/corp_finance", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.APICK_API_KEY },
  body: form,
  signal: AbortSignal.timeout(120_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const result = await response.json();
console.log(result);

```

### python

```python

import os
import requests
parts = [
    ("crno", (None, "1100000000001")),
    ("bizYear", (None, "2024")),
    ("type", (None, "all")),
    ("scope", (None, "all")),
]
response = requests.request("POST", "https://apick.app/rest/corp_finance",
    headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
    files=parts,
    timeout=(10, 120))
response.raise_for_status()
result = response.json()
print(result)

```

### php

```php

<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
    'crno' => '1100000000001',
    'bizYear' => '2024',
    'type' => 'all',
    'scope' => 'all',
];
$curl = curl_init('https://apick.app/rest/corp_finance');
curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => $form,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($curl);
if ($body === false) { throw new RuntimeException(curl_error($curl)); }
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($status >= 400) { throw new RuntimeException($body); }
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($result);

```

## 사용 예시 1. 여신 심사용 재무비율 받기

부채비율·영업이익률·ROE만 필요할 때 `type=summary`로 요약재무제표와 비율만 받습니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/corp_finance' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'crno=1100000000001' \
  --form-string 'bizYear=2024' \
  --form-string 'type=summary'

```

- `data.metrics.debtRatio`·`data.metrics.operatingMargin`·`data.metrics.roe`는 % 숫자입니다. null이면 분모가 0 이하라 계산할 수 없다는 뜻이니 0으로 바꾸지 마세요.

- `data.metrics.scope`가 `consolidated`이면 연결, `separate`이면 별도 재무제표 기준 비율입니다.

## 사용 예시 2. 최근 연도 자동 선택

결산 시점을 모를 때 `bizYear`를 비워 조회 가능한 가장 최근 연도를 받습니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/corp_finance' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'crno=1100000000001'

```

- `data.company.bizYear`에 실제로 조회된 연도가 옵니다. 화면에 "2024 사업연도 기준"처럼 함께 보여 주세요.

- `data.metrics.revenueGrowth`가 null이면 전년 자료가 없거나 전년 매출이 0 이하인 경우입니다.

## 사용 예시 3. 별도 재무제표 계정과목 비교

모회사 단독 실적을 계정과목 단위로 3개년 비교할 때 씁니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/corp_finance' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'crno=1100000000001' \
  --form-string 'bizYear=2024' \
  --form-string 'type=income' \
  --form-string 'scope=separate'

```

- `data.income[]`의 `current`·`previous`·`previous2`가 당기·전기·전전기 금액(원)입니다.

- 같은 계정은 `accountId`로 찾습니다. `type=income`이면 `data.metrics`는 null입니다.

- `data.error`가 `해당 사업연도의 재무정보가 없습니다.`이면 `bizYear`를 한 해 낮춰 다시 요청합니다.

## 코드·오류

### 업무 실패 응답

입력 오류·대상 없음·일시 실패는 data.error(사유)와 data.success=0으로 오며 api.cost는 0(과금 없음)입니다. HTTP 상태는 400·404·408·424 중 하나입니다. 입력 오류는 값을 고쳐 다시 요청하고, 408·424는 잠시 후 한 번 다시 시도하세요.

```json

{
  "data": {
    "error": "입력값을 확인해 주세요.",
    "success": 0
  },
  "api": {
    "success": true,
    "cost": 0,
    "ms": 5
  }
}

```

## 상세 기능·요금

이용 전 확인 성공한 조회 한 건당 50P가 차감됩니다. 조회 결과가 없거나 입력이 잘못되면 data.error로 안내 문구가 오고 api.cost는 0입니다. 법인등록번호는 사업자등록번호(10자리)와 다릅니다. 13자리 숫자이며 법인 등기사항증명서에서 확인할 수 있습니다. 개인사업자는 법인등록번호가 없으므로 조회할 수 없습니다. 사업연도를 생략하면 조회 가능한 가장 최근 연도를 자동으로 고릅니다. 실제로 조회된 연도는 응답의 data.company.bizYear에서 확인하세요. 재무정보는 하루 한 번 갱신됩니다. 사업연도 종료 직후에는 아직 값이 없을 수 있으니 그해가 비면 직전 연도로 다시 조회하세요. 응답 시간은 보통 10초 이내이고 최대 30초입니다. 요청 시간 제한을 35초 이상으로 잡으세요. 인증키는 서버 환경변수에 보관하고 공개 저장소·웹페이지에 넣지 마세요.

## 상세 요청

항목설정 메서드·주소POST https://apick.app/rest/corp_finance 인증 헤더Authorization: Bearer — 내 계정의 API 인증키 본문 형식multipart/form-data type 허용값 값채워지는 목록 all (또는 전체·통합)summary[]·balance[]·income[] 모두와 metrics (기본값) summary (또는 요약·요약재무제표)summary[]와 metrics만 채웁니다. balance (또는 재무상태표·대차대조표)balance[]만 채웁니다. metrics는 null입니다. income (또는 손익계산서·손익)income[]만 채웁니다. metrics는 null입니다. scope 허용값 값의미 all (또는 전체)연결·별도를 모두 돌려줍니다 (기본값). 행마다 scope로 구분합니다. consolidated (또는 연결·cfs)종속회사를 합친 연결 재무제표만 돌려줍니다. separate (또는 별도·ofs)회사 단독의 별도(개별) 재무제표만 돌려줍니다. 요청 예시 2024 사업연도의 연결·별도 재무제표를 모두 받는 예입니다. 성공 시 과금되는 실제 요청입니다. form-data 전체 예제 보기 재무비율만 필요하면 type=summary, 계정과목 단위가 필요하면 type=balance 또는 type=income으로 호출합니다. 요금은 type과 관계없이 같습니다. 응답 구조는 항상 같고, 요청하지 않은 목록은 빈 배열로 옵니다.

## 상세 응답

필드타입설명 data.company.crnostring조회한 법인등록번호 13자리(숫자만)입니다. data.company.bizYearstring실제로 조회된 사업연도(YYYY)입니다. bizYear를 생략했다면 자동 선택된 연도입니다. data.company.currencystring금액 통화 코드입니다. 대부분 KRW(원)이며, 다른 값이면 금액을 그 통화로 해석하세요. data.summary[]array요약재무제표입니다. 연결·별도마다 한 행씩 옵니다. 금액 필드는 모두 원 단위 숫자이며 값이 없으면 null입니다. data.summary[].scopestringconsolidated(연결)·separate(별도)·other(구분 불명) 중 하나입니다. data.summary[].scopeNamestring구분 이름입니다. 예: 연결요약재무제표, 별도요약재무제표 data.summary[].baseDatestring결산 기준일(YYYY-MM-DD)입니다. 12월 결산이 아니면 연말이 아닐 수 있습니다. data.summary[].bizYearstring그 행의 사업연도(YYYY)입니다. data.summary[].currencystring그 행의 금액 통화 코드입니다. data.summary[].revenuenumber매출액(원)입니다. data.summary[].operatingProfitnumber영업이익(원)입니다. 손실이면 음수입니다. data.summary[].profitBeforeTaxnumber법인세비용차감전순이익(원)입니다. data.summary[].netIncomenumber당기순이익(원)입니다. 손실이면 음수입니다. data.summary[].totalAssetsnumber자산총계(원)입니다. data.summary[].totalLiabilitiesnumber부채총계(원)입니다. data.summary[].totalEquitynumber자본총계(원)입니다. 자본잠식이면 음수일 수 있습니다. data.summary[].capitalStocknumber자본금(원)입니다. data.balance[]array재무상태표 계정과목 목록입니다. 계정마다 한 행이며 연결·별도가 섞여 오면 scope로 나눕니다. data.balance[].accountIdstring계정과목 식별자입니다. 회사·연도가 달라도 같은 계정이면 같은 값이므로 비교·집계 키로 씁니다. data.balance[].accountNamestring계정과목 이름입니다. 예: 자산총계, 유동부채 data.balance[].currentnumber당기(조회한 사업연도) 금액(원)입니다. data.balance[].previousnumber전기(직전 연도) 금액(원)입니다. data.balance[].previous2number전전기(2년 전) 금액(원)입니다. data.balance[].quarternumber분기 금액(원)입니다. 연간 재무제표에서는 보통 0입니다. data.balance[].quarterEndnumber분기말 누적 금액(원)입니다. 연간 재무제표에서는 보통 0입니다. data.balance[].scopestring그 계정이 속한 구분입니다. summary[].scope와 같은 값을 씁니다. data.income[]array손익계산서 계정과목 목록입니다. 필드 구성은 balance[]와 같습니다. data.metricsobject재무비율·성장률입니다. summary[]가 비어 있으면(type=balance·income) null입니다. data.metrics.scopestring비율 계산에 쓴 구분입니다. 연결이 있으면 consolidated, 없으면 첫 행의 구분입니다. data.metrics.debtRationumber부채비율(%) = 총부채 ÷ 총자본 × 100. 총자본이 0 이하이면 null입니다. data.metrics.operatingMarginnumber영업이익률(%) = 영업이익 ÷ 매출액 × 100. 매출액이 0 이하이면 null입니다. data.metrics.currencystring비율 계산에 쓴 재무제표의 통화 코드입니다. data.metrics.netMarginnumber순이익률(%) = 당기순이익 ÷ 매출액 × 100. 매출액이 0 이하이면 null입니다. data.metrics.roanumber총자산이익률(%) = 당기순이익 ÷ 총자산 × 100. 총자산이 0 이하이면 null입니다. data.metrics.roenumber자기자본이익률(%) = 당기순이익 ÷ 총자본 × 100. 총자본이 0 이하이면 null입니다. data.metrics.revenueGrowthnumber매출액 성장률(%) = (당기 − 전기) ÷ 전기 × 100. 전년 자료가 없거나 전기 값이 0 이하이면 null입니다. data.metrics.operatingProfitGrowthnumber영업이익 성장률(%)입니다. 전기 영업이익이 손실(0 이하)이면 null입니다. data.metrics.netIncomeGrowthnumber당기순이익 성장률(%)입니다. 전기 순이익이 손실(0 이하)이면 null입니다. data.countintegersummary[]·balance[]·income[] 행 수의 합입니다. api.costinteger차감된 포인트입니다. 실패하거나 결과가 없으면 0입니다. api.msinteger처리 시간(밀리초)입니다. 비율·성장률은 소수 둘째 자리까지 반올림한 백분율 숫자입니다(55.56은 55.56%). 계산할 수 없으면 null이므로 0으로 해석하지 마세요. { "data": { "company": { "crno": "1100000000001", "bizYear": "2024", "currency": "KRW" }, "summary": [ { "scope": "consolidated", "scopeName": "연결요약재무제표", "baseDate": "2024-12-31", "bizYear": "2024", "currency": "KRW", "revenue": 300000000000, "operatingProfit": 25000000000, "profitBeforeTax": 21000000000, "netIncome": 16000000000, "totalAssets": 420000000000, "totalLiabilities": 150000000000, "totalEquity": 270000000000, "capitalStock": 5000000000 } ], "balance": [ { "scope": "consolidated", "accountId": "ACCT_TOTAL_ASSETS", "accountName": "자산총계", "current": 420000000000, "previous": 390000000000, "previous2": 360000000000, "quarter": 0, "quarterEnd": 0, "currency": "KRW" } ], "income": [ { "scope": "consolidated", "accountId": "ACCT_OPERATING_PROFIT", "accountName": "영업이익", "current": 25000000000, "previous": 22000000000, "previous2": 19000000000, "quarter": 0, "quarterEnd": 0, "currency": "KRW" } ], "metrics": { "scope": "consolidated", "currency": "KRW", "debtRatio": 55.56, "operatingMargin": 8.33, "netMargin": 5.33, "roa": 3.81, "roe": 5.93, "revenueGrowth": 7.14, "operatingProfitGrowth": 13.64, "netIncomeGrowth": 9.59 }, "count": 3 }, "api": { "cost": 50, "success": true, "ms": 880 } } 예시의 accountId는 설명을 위한 가상 값입니다. 실제 응답에는 계정과목 표준 식별자가 옵니다.

## 상세 코드·정책

오류와 복구 아래 경우는 data.error로 응답하며 과금되지 않습니다(api.cost 0). 실패 응답은 표의 HTTP 상태 코드와 함께 옵니다. 입력을 고쳐야 하는 오류는 400, 해당 연도 자료 없음과 일시적 실패는 424입니다. 화면에 보여 줄 안내는 본문의 data.error를 쓰세요. 상황HTTPdata.error해결 법인등록번호 형식 오류400법인등록번호(13자리)가 필요합니다.숫자 13자리를 보냅니다. 사업자등록번호(10자리)를 넣지 않았는지 확인합니다. 사업연도 형식 오류400사업연도는 4자리(YYYY)입니다.1900년부터 내년 사이의 4자리 연도로 보내거나 생략합니다. type 값 오류400조회 항목(type)이 잘못됐습니다.all·summary·balance·income 중 하나로 보냅니다. scope 값 오류400연결·별도 구분(scope)이 잘못됐습니다.all·consolidated·separate 중 하나로 보냅니다. 입력값이 문자열이 아님400조회 조건이 올바르지 않습니다.같은 이름을 여러 번 보내거나 배열·객체로 보내지 않았는지 확인합니다. 각 항목은 문자열 하나로 보냅니다. 해당 연도 자료 없음424해당 사업연도의 재무정보가 없습니다.직전 사업연도로 다시 조회합니다. 재무정보를 공개하지 않는 소규모 법인도 이 응답이 옵니다. 일시적 조회 실패424기업 재무정보를 가져오지 못했습니다.잠시 후 같은 요청을 다시 보냅니다. 연결 재무제표가 없는 회사는 scope=consolidated로 조회하면 결과가 없어 실패합니다. 연결 여부를 모르면 scope=all로 조회하고 행의 scope로 나누세요.

## 상세 예제

호출 예시 같은 요청을 JavaScript와 Python으로 옮긴 예시입니다. 키는 환경변수 APICK_API_KEY 에서 읽습니다. JavaScript 예시 form-data 전체 예제 보기 Python 예시 form-data 전체 예제 보기
