Skip to content

Create Shipment

브이리뷰 챗봇이 추적하는 배송정보를 입력합니다.

모든 API 는 유효한 Authorization 헤더가 있어야 사용할 수 있습니다. 헤더를 작성하는 방법은 토큰 생성과 검증 문서를 참고하시기 바랍니다.

API 정보

[POST] /api/v1/orders/{id}/shipments/

요청

{
  "order_item_ids": [
    "string"
  ],
  "company_code": "string",
  "tracking_number": "string"
}
항목 설명 필수
id 사용자의 서비스에 저장된 주문(Order)의 고유한 id 입니다. (중복 불가) 필수
order_item_ids 사용자의 서비스에 저장된 주문 품목(Order item)의 고유한 id 입니다. 배열로 정보를 입력할 수 있으며, 배열의 모든 주문 품목에 대해 입력한 tracking_number를 적용합니다. 필수
company_code 배송업체입니다. 배송업체 레퍼런스는 문서 하단 혹은 여기를 참고해주세요. 필수
tracking_number 송장번호입니다. 필수

요청 예시

curl --location -g --request POST '/api/v1/orders/{id}/shipments/' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <TOKEN>' \
--data-raw '{
  "order_id": "string",
  "order_item_ids": [
    "string"
  ],
  "company_code": "string",
  "tracking_number": "string"
}'
import requests
import json

url = "/api/v1/orders/{id}/shipments/"

payload = json.dumps({
  "order_id": "string",
  "order_item_ids": [
    "string"
  ],
  "company_code": "string",
  "tracking_number": "string"
})
headers = {
  'Accept': 'application/json',
  'Content-Type': 'application/json',
  'Authorization': 'Basic <TOKEN>'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
import java.io.*;
import okhttp3.*;
public class main {
  public static void main(String []args) throws IOException{
    OkHttpClient client = new OkHttpClient().newBuilder()
      .build();
    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\n  \"order_id\": \"string\", \n  \"order_item_ids\": [\n    \"string\"\n  ],\n  \"company_code\": \"string\",\n  \"tracking_number\": \"string\"\n}");
    Request request = new Request.Builder()
      .url("/api/v1/orders/{id}/shipments/")
      .method("POST", body)
      .addHeader("Accept", "application/json")
      .addHeader("Content-Type", "application/json")
      .addHeader("Authorization", "Basic <TOKEN>")
      .build();
    Response response = client.newCall(request).execute();
    System.out.println(response.body().string());
  }
}
import com.mashape.unirest.http.*;
import java.io.*;
public class main {
  public static void main(String []args) throws Exception{
    Unirest.setTimeouts(0, 0);
    HttpResponse<String> response = Unirest.post("/api/v1/orders/{id}/shipments/")
      .header("Accept", "application/json")
      .header("Content-Type", "application/json")
      .header("Authorization", "Basic <TOKEN>")
      .body("{\n  \"order_id\": \"string\", \n  \"order_item_ids\": [\n    \"string\"\n  ],\n  \"company_code\": \"string\",\n  \"tracking_number\": \"string\"\n}")
      .asString();

    System.out.println(response.getBody());
  }
}
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "/api/v1/orders/%7Bid%7D/shipments/"
  method := "POST"

  payload := strings.NewReader(`{
  "order_id": "string",
  "order_item_ids": [
    "string"
  ],
  "company_code": "string",
  "tracking_number": "string"
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Accept", "application/json")
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Authorization", "Basic <TOKEN>")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '/api/v1/orders/%7Bid%7D/shipments/',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
  "order_id": "string",
  "order_item_ids": [
    "string"
  ],
  "company_code": "string",
  "tracking_number": "string"
}',
  CURLOPT_HTTPHEADER => array(
    'Accept: application/json',
    'Content-Type: application/json',
    'Authorization: Basic <TOKEN>'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
var axios = require('axios');
var data = JSON.stringify({
  "order_id": "string",
  "order_item_ids": [
    "string"
  ],
  "company_code": "string",
  "tracking_number": "string"
});

var config = {
  method: 'post',
  url: '/api/v1/orders/{id}/shipments/',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Authorization': 'Basic <TOKEN>'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

✅ 응답 - 202 : 생성 완료

{
  "message": "Successfully shipment creation request queued."
}

❌ 응답 - 401

{
  "detail": "<에러의 내용>"
}
401 에러의 내용은 아래와 같습니다.

detail 설명
Authorization header required. 인증 헤더가 설정되어있지 않은 경우입니다.
Authorization header was invalid. 인증 헤더가 올바르지 않은 형식으로 되어있는 경우입니다.
Access key id was invalid. 인증 헤더의 Access key id가 유효하지 않은 경우입니다.
Secret access key was invalid. 인증 헤더의 Secret access key가 유효하지 않은 경우입니다.

❌ 응답 - 422

요청 바디의 유효성 검증이 실패한 경우입니다.

{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

company_code

회사 이름 company_code 설명
자체배송 self 요청의 tracking_numberself 로 설정하여 요청해야 합니다. 주문 생성 요청 기준으로 사전에 지정해주신 N일 후 구매감사 알림톡이 발송됩니다.
천일택배 kr.chunilps
cj대한통운 kr.cjlogistics
cu-편의점택배 kr.cupost
cvsnet-편의점택배 kr.cvsnet
cway-express kr.cway
대신택배 kr.daesin
우체국택배 kr.epost
한의사랑택배 kr.hanips
한진택배 kr.hanjin
합동택배 kr.hdexp
홈픽택배 kr.homepick
호남택배 kr.honamlogis
일양로지스 kr.ilyanglogis
경동택배 kr.kdexp
건영택배 kr.kunyoung
로젠택배 kr.logen
롯데택배 kr.lotte
slx kr.slx
성원글로벌카고 kr.swgexp
ems un.upu.ems
fedex us.fedex
ups us.ups
usps us.usps
dhl de.dhl
tnt-express nl.tnt

주의사항

생성 API의 경우 요청량이 많아, 생성 반영까지 1분정도의 시간이 필요할 수 있습니다.