translation

개요

Papago NMT API는 네이버 Papago에 적용된 번역 REST API 로, 입력된 텍스트를 다른 나라 언어(영어, 중국어)로 번역한 텍스트로 출력합니다. 비로그인 오픈 API 이므로 POST로 호출할 때 HTTP Header에 애플리케이션 등록 시 발급받은 Client ID와 Client Secret 값을 같이 전송하여 사용합니다.

요청

  • form 형식으로 요청

    curl -i -X POST \
    -H "X-NCP-APIGW-API-KEY-ID:{앱 등록 시 발급받은 Client ID}" \
    -H "X-NCP-APIGW-API-KEY:{앱 등록 시 발급 받은 Client Secret}" \
    -H "Content-Type:application/x-www-form-urlencoded" \
    -d "source={원본 언어 코드}" \
    -d "target={번역 결과 언어 코드}" \
    -d "text={번역할 text}" \
    'https://naveropenapi.apigw.ntruss.com/nmt/v1/translation'
    
  • json 형식으로 요청

    curl -i -X POST \
    -H "X-NCP-APIGW-API-KEY-ID:{앱 등록 시 발급받은 Client ID}" \
    -H "X-NCP-APIGW-API-KEY:{앱 등록 시 발급 받은 Client Secret}" \
    -H "Content-Type:application/json" \
    -d \
    '{
    "source": "{원본 언어 코드}",
    "target": "{번역 결과 언어 코드}",
    "text": "{번역할 text}"
    }' \
    'https://naveropenapi.apigw.ntruss.com/nmt/v1/translation'
    

요청 파라미터

  • 해당 API는 요청 파라미터를 필요로 하지 않습니다.

요청 헤더

헤더명 설명
X-NCP-APIGW-API-KEY-ID 앱 등록 시 발급받은 Client ID
X-NCP-APIGW-API-KEY-ID:{Client ID}
X-NCP-APIGW-API-KEY 앱 등록 시 발급 받은 Client Secret
X-NCP-APIGW-API-KEY:{Client Secret}
Content-Type 전송할 콘텐츠 형식
Content-Type:application/x-www-form-urlencoded
Content-Type:application/json

요청 바디

파라미터 타입 필수 여부 설명
source String Y 원본 언어(source language)의 언어 코드
target String Y 목적 언어(target language)의 언어 코드
text String Y 번역할 텍스트. 1회 호출 시 최대 5,000자까지 번역할 수 있습니다.
honorific Boolean N 높임말 여부. 영>한 번역에서만 적용됩니다. 기본값은 False

언어 코드 (source, target)

언어 코드 언어
ko 한국어
en 영어
ja 일본어
zh-CN 중국어 간체
zh-TW 중국어 번체
vi 베트남어
id 인도네시아어
th 태국어
de 독일어
ru 러시아어
es 스페인어
it 이탈리아어
fr 프랑스어

번역할 수 있는 원본 언어와 목적 언어

원본 언어(언어 코드) 목적 언어(언어 코드) | 원본 언어(언어 코드) 목적 언어(언어 코드)
한국어(ko) 영어(en) | 영어(en) 한국어(ko)
한국어(ko) 일본어(ja) | 일본어(ja) 한국어(ko)
한국어(ko) 중국어 간체(zh-CN) | 중국어 간체(zh-CN) 한국어(ko)
한국어(ko) 중국어 번체(zh-TW) | 중국어 번체(zh-TW) 한국어(ko)
한국어(ko) 베트남어(vi) | 베트남어(vi) 한국어(ko)
한국어(ko) 인도네시아어(id) | 인도네시아어(id) 한국어(ko)
한국어(ko) 태국어(th) | 태국어(th) 한국어(ko)
한국어(ko) 독일어(de) | 독일어(de) 한국어(ko)
한국어(ko) 러시아어(ru) | 러시아어(ru) 한국어(ko)
한국어(ko) 스페인어(es) | 스페인어(es) 한국어(ko)
한국어(ko) 이탈리아어(it) | 이탈리아어(it) 한국어(ko)
한국어(ko) 프랑스어(fr) | 프랑스어(fr) 한국어(ko)
영어(en) 일본어(ja) | 일본어(ja) 영어(en)
영어(en) 프랑스어(fr) | 프랑스어(fr) 영어(en)
영어(en) 중국어 간체(zh-CN) | 중국어 간체(zh-CN) 영어(en)
영어(en) 중국어 번체(zh-TW) | 중국어 번체(zh-TW) 영어(en)
일본어(ja) 중국어 간체(zh-CN) | 중국어 간체(zh-CN) 일본어(ja)
일본어(ja) 중국어 번체(zh-TW) | 중국어 번체(zh-TW) 일본어(ja)
중국어 간체(zh-CN) 중국어 번체(zh-TW) | 중국어 번체(zh-TW) 중국어 간체(zh-CN)

응답

응답 바디

필드명 타입 설명
srcLangType string 원본 언어 코드
tarLangType string 번역 결과 언어 코드
translatedText string 번역된 문장

예시

요청 예시

POST /nmt/v1/translation HTTP/1.1
HOST: naveropenapi.apigw.ntruss.com
User-Agent: curl/7.49.1
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-NCP-APIGW-API-KEY-ID: {애플리케이션 등록 시 발급받은 client id 값}
X-NCP-APIGW-API-KEY: {애플리케이션 등록 시 발급받은 client secret 값}
Content-Length: 51
curl -i -X POST \
   -H "X-NCP-APIGW-API-KEY-ID:kf4a7jfark" \
   -H "X-NCP-APIGW-API-KEY:B8oczJX6DJiorOGcN3UbuylsJFUGqGXFaTxIIemY" \
   -H "Content-Type:application/x-www-form-urlencoded" \
   -d "source=en" \
   -d "target=ko" \
   -d "text=hello world" \
 'https://naveropenapi.apigw.ntruss.com/nmt/v1/translation'

응답 예시

{
  "message": {
    "@type": "response",
    "@service": "naverservice.labs.api",
    "@version": "1.0.0",
    "result": {
      "translatedText": "tea"
    }
  }
}

API 예제

// 네이버 Papago NMT API 예제
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class APIExamTranslate {

    public static void main(String[] args) {
        String clientId = "YOUR_CLIENT_ID";//애플리케이션 클라이언트 아이디값";
        String clientSecret = "YOUR_CLIENT_SECRET";//애플리케이션 클라이언트 시크릿값";
        try {
            String text = URLEncoder.encode("만나서 반갑습니다.", "UTF-8");
            String apiURL = "https://naveropenapi.apigw.ntruss.com/nmt/v1/translation";
            URL url = new URL(apiURL);
            HttpURLConnection con = (HttpURLConnection)url.openConnection();
            con.setRequestMethod("POST");
            con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
            con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
            // post request
            String postParams = "source=ko&target=en&text=" + text;
            con.setDoOutput(true);
            DataOutputStream wr = new DataOutputStream(con.getOutputStream());
            wr.writeBytes(postParams);
            wr.flush();
            wr.close();
            int responseCode = con.getResponseCode();
            BufferedReader br;
            if(responseCode==200) { // 정상 호출
                br = new BufferedReader(new InputStreamReader(con.getInputStream()));
            } else {  // 오류 발생
                br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
            }
            String inputLine;
            StringBuffer response = new StringBuffer();
            while ((inputLine = br.readLine()) != null) {
                response.append(inputLine);
            }
            br.close();
            System.out.println(response.toString());
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
// 네이버 Papago NMT API 예제
<?php
  $client_id = "YOUR_CLIENT_ID";
  $client_secret = "YOUR_CLIENT_SECRET";
  $encText = urlencode("반갑습니다.");
  $postvars = "source=ko&target=en&text=".$encText;
  $url = "https://naveropenapi.apigw.ntruss.com/nmt/v1/translation";
  $is_post = true;
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, $is_post);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
  $headers = array();
  $headers[] = "X-NCP-APIGW-API-KEY-ID: ".$client_id;
  $headers[] = "X-NCP-APIGW-API-KEY: ".$client_secret;
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  $response = curl_exec ($ch);
  $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  echo "status_code:".$status_code."<br />";
  curl_close ($ch);
  if($status_code == 200) {
    echo $response;
  } else {
    echo "Error 내용:".$response;
  }
?>
// 네이버 Papago NMT API 예제
var express = require('express');
var app = express();
var client_id = 'YOUR_CLIENT_ID';
var client_secret = 'YOUR_CLIENT_SECRET';
var query = '번역할 문장을 입력하세요.';
app.get('/translate', function(req, res) {
  var api_url = 'https://naveropenapi.apigw.ntruss.com/nmt/v1/translation';
  var request = require('request');
  var options = {
    url: api_url,
    form: { source: 'ko', target: 'en', text: query },
    headers: { 'X-NCP-APIGW-API-KEY-ID': client_id, 'X-NCP-APIGW-API-KEY': client_secret },
  };
  request.post(options, function(error, response, body) {
    if (!error && response.statusCode == 200) {
      res.writeHead(200, { 'Content-Type': 'text/json;charset=utf-8' });
      res.end(body);
    } else {
      res.status(response.statusCode).end();
      console.log('error = ' + response.statusCode);
    }
  });
});
app.listen(3000, function() {
  console.log('http://127.0.0.1:3000/translate app listening on port 3000!');
});
// 네이버 Papago NMT API 예제
import os
import sys
import urllib.request
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
encText = urllib.parse.quote("번역할 문장을 입력하세요")
data = "source=ko&target=en&text=" + encText
url = "https://naveropenapi.apigw.ntruss.com/nmt/v1/translation"
request = urllib.request.Request(url)
request.add_header("X-NCP-APIGW-API-KEY-ID",client_id)
request.add_header("X-NCP-APIGW-API-KEY",client_secret)
response = urllib.request.urlopen(request, data=data.encode("utf-8"))
rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)
// 네이버 Papago NMT API 예제
using System;
using System.Net;
using System.Text;
using System.IO;

namespace NaverAPI_Guide
{
    public class APIExamTranslate
    {
        static void Main(string[] args)
        {
            string url = "https://naveropenapi.apigw.ntruss.com/nmt/v1/translation";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Headers.Add("X-NCP-APIGW-API-KEY-ID", "YOUR-CLIENT-ID");
            request.Headers.Add("X-NCP-APIGW-API-KEY", "YOUR-CLIENT-SECRET");
            request.Method = "POST";
            string query = "오늘 날씨는 어떻습니까?";
            byte[] byteDataParams = Encoding.UTF8.GetBytes("source=ko&target=en&text=" + query);
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = byteDataParams.Length;
            Stream st = request.GetRequestStream();
            st.Write(byteDataParams, 0, byteDataParams.Length);
            st.Close();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream stream = response.GetResponseStream();
            StreamReader reader = new StreamReader(stream, Encoding.UTF8);
            string text = reader.ReadToEnd();
            stream.Close();
            response.Close();
            reader.Close();
            Console.WriteLine(text);
        }
    }
}

오류 코드

HttpStatusCode ErrorCode ErrorMessage Description
400 N2MT01 source parameter is needed source 파라미터가 필요합니다.
400 N2MT02 Unsupported source language 지원하지 않는 source 언어입니다
400 N2MT03 target parameter is needed target 파라미터가 필요합니다.
400 N2MT04 Unsupported target language 지원하지 않는 target 언어입니다
400 N2MT05 source and target must be different source와 target 이 동일합니다.
400 N2MT06 There is no source-to-target translator source->target 번역기가 없습니다
400 N2MT07 text parameter is needed text 파라미터가 필요합니다.
400 N2MT08 text parameter exceeds max length text 파라미터가 최대 용량을 초과했습니다
500 N2MT99 Internal server errors 내부 서버 오류입니다.