AI Service > AI Fashion > API v1.0ガイド

  • AI Fashion v1.0サービスを使用するために必要なAPIを説明します。

API共通情報

事前準備

  • APIを使用するためには、プロジェクト統合アプリキーまたはサービスアプリキーが必要です。
    • プロジェクト統合アプリキーの使用を推奨します。
    • プロジェクト統合アプリキーは、プロジェクト設定ページのAPIセキュリティ設定で生成して使用できます。
    • サービスアプリキーは、コンソール上部のURL & Appkey メニューで確認できます。

リクエスト共通情報

  • APIを使用するためには、セキュリティキー認証処理が必要です。

[APIドメイン]

ドメイン
https://api-aifashion.nhncloudservice.com

インデックス

インデックスガイド

  • サポートされるファイル形式:JSONL(.jsonl), CSV(.csv)
  • CSVファイルを作成する際は、最初の行から実際のデータを入力する必要があります。
  • ファイルに空白の行がないようにしてください。
  • 内容はUTF-8でエンコードする必要があります。
  • インデックスファイルの最大サイズ:5MB
  • インデックスファイル内の最大データ数: 10,000個(行区切り)
  • 画像URLコンテンツの最大サイズ: 20MB
  • サービスごとにインデックス可能な最大文書数: 100,000個

画像ガイド

  • 画像のダウンロードに3秒以上かかる場合、失敗とみなします。
  • 画像内のファッションアイテムの幅と高さが共に20px以下の場合は認識しません。
  • 画像サイズが大きくなるにつれて、ファッションアイテムのサイズも大きくすることでより正確に認識できます。
  • 画像でファッションアイテムが占める割合が大きいほど、より正確に認識できます。
  • 画像URLにポートを直接指定する場合、80、443、10000~12000のポートのみ使用可能です。
  • 画像ファイルの最大サイズ:5MB(ただし、Tag APIは1MB)
  • サポートする画像ファイル形式:PNG、JPEG、GIF

フィルタリングガイド

  • フィルタリング機能はカテゴリーまたはフィルタを制限して検索する際に使用します。

対象フィールド

名前 フィールド名
カテゴリー1depth category1_id
カテゴリー2depth category2_id
カテゴリー3depth category3_id
フィルタ1 s1
フィルタ2 s2

文法

  • filter.{フィールド名}=演算子:
条件 演算子 説明
equal(default) equal filter.category2_id=1003,1005 or
filter.category2_id=equal:1003 or
filter.category2_id=equal:1003&filter.s1=equal:1
対象フィールドの値がパラメータの値と同じ文書のみ結果としてレスポンスします。
コンマ(,)で区切ってOR検索が可能です。
not equal !equal filter.category2_id=!equal:1003 or
filter.category2_id=!equal:1003,1005 or
filter.category2_id=!equal:1003,1005&filter.s1=!equal:1
対象フィールドの値がパラメータの値と異なる文書のみ結果としてレスポンスします。
コンマ(,)で区切ってOR検索が可能です。

レスポンス共通情報

  • 全てのAPIリクエストに'200 OK'でレスポンスします。詳細なレスポンス結果はレスポンス本文ヘッダを参照してください。

[レスポンス本文ヘッダ]

名前 タイプ 説明
header.isSuccessful boolean true:正常
false:エラー
header.resultCode int 0:正常
0より大きい:部分成功
負の値:エラー
header.resultMessage string "SUCCESS":正常
その他:エラーメッセージを返す

[成功レスポンス本文の例]

{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    }
}

[失敗レスポンス本文の例]

{
    "header": {
        "isSuccessful": false,
        "resultCode": -40000,
        "resultMessage": "InvalidParam"
    }
}

サービス管理

サービスの作成

  • サービスを作成できるAPI
  • 最大5個まで作成可能
  • 許容文字
    • 英語小文字、数字、 (-),(_)
    • 最初の文字は英小文字のみ
    • 2~32文字

リクエスト

[URI]

メソッド URI
POST /nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}

[Path Variable]

名前 説明
appKey 統合アプリキーまたはサービスアプリキー
serviceID サービス名
リクエスト例
curl -X POST "${domain}/nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}"

レスポンス

レスポンス本文の例
{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    }
}

エラーコード

resultCode resultMessage 説明
-40000 InvalidParam パラメータにエラーがある
-41000 UnauthorizedAppKey 承認されていないアプリキー
-42010 DuplicateServiceName 重複したサービス名
-42030 ServiceQuotaExceededException 許可されたサービス数超過
-50000 InternalServerError サーバーエラー

サービス削除

  • サービスを削除できるAPI
  • サービスに処理中のインデックスリクエストがある場合も、サービスを削除できます。

リクエスト

[URI]

メソッド URI
DELETE /nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}

[Path Variable]

名前 説明
appKey 統合アプリキーまたはサービスアプリキー
serviceID サービス名
リクエスト例
curl -X DELETE "${domain}/nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}"

レスポンス

レスポンス本文の例
{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    }
}

エラーコード

resultCode resultMessage 説明
-40000 InvalidParam パラメータにエラーがある
-41000 UnauthorizedAppKey 承認されていないアプリキー
-42000 NotExistService 存在しないサービス
-50000 InternalServerError サーバーエラー

サービスリスト照会

  • 登録されたサービス名リストを取得するAPI

リクエスト

[URI]

メソッド URI
GET /nhn-ai-fashion/v1.0/appkeys/{appKey}/services

[Path Variable]

名前 説明
appKey 統合アプリキーまたはサービスアプリキー
リクエスト例
curl -X GET "${domain}/nhn-ai-fashion/v1.0/appkeys/{appKey}/services"

レスポンス

[レスポンス本文データ]

名前 タイプ 必須 説明
data.totalCount Number O 5 総検索結果数
data.items[].serviceID String O my-service サービス名
レスポンス本文の例
{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    },
    "data": {
        "totalCount": 2,
        "items": [{
                "serviceID": "my-service"
            },
            {
                "serviceID": "second_service"
            }
        ]
    }
}

エラーコード

resultCode resultMessage 説明
-40000 InvalidParam パラメータにエラーがある
-41000 UnauthorizedAppKey 承認されていないアプリキー
-50000 InternalServerError サーバーエラー

類似画像商品の推薦

商品IDで類似商品を検索

  • 商品IDに基づいて類似のファッションアイテムを含む商品を検索するAPI

リクエスト

[URI]

メソッド URI
GET /nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}/product/{productID}

[Path Variable]

名前 説明
appKey 統合アプリキーまたはサービスアプリキー
serviceID サービス名
productID 商品ID

[URL Parameter]

名前 タイプ 必須 説明
limit int O 100 最大サイズ
1以上200以下に設定可能
filter.category1_id string X equal:3 category1_id値でフィルタリング
filter.category2_id string X !equal:3 category2_id値でフィルタリング
filter.category3_id string X !equal:3 category3_id値でフィルタリング
filter.s1 string X equal:3 s1値でフィルタリング
filter.s2 string X !equal:3 s2値でフィルタリング
threshold float32 X 0.8 マッチングの有無を判断する類似度基準値
data.items[].similarity >= thresholdである項目のみマッチングしていると判断します。
0より上、1.0以下に設定可能
リクエスト例
curl -X GET "${domain}/nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}/product/{productID}?limit=100&filter.s1=equal:1"

レスポンス

[レスポンス本文データ]

名前 タイプ 必須 説明
data.totalCount Number O 100 総検索結果数
data.query String O productID=10234455&limit=100 検索クエリ
data.items[].similarity Number O 0.91234 検索類似度スコア
data.items[].productID String O 8980335 商品ID
レスポンス本文の例
{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    },
    "data": {
        "totalCount": 100,
        "query": "productID=10234455&limit=100",
        "items": [{
                "similarity": 0.91234,
                "productID": "8980335"
            },
            {
                "similarity": 0.81234,
                "productID": "7980335"
            }
        ]
    }
}

エラーコード

resultCode resultMessage 説明
-40000 InvalidParam パラメータにエラーがある
-40050 NotFoundProductId 商品IDが見つからない
-41000 UnauthorizedAppKey 承認されていないアプリキー
-42000 NotExistService 存在しないサービス
-50000 InternalServerError サーバーエラー

カメラ検索

ファッションアイテム検出

  • 入力された画像からファッションアイテムを検出するAPI

リクエスト

[URI]

メソッド URI
GET /nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}/detect

[Path Variable]

名前 説明
appKey 統合アプリキーまたはサービスアプリキー
serviceID サービス名

[URL Parameter]

名前 タイプ 必須 説明
path String O https://imagecdn.co.kr/sample_image.jpg URLエンコードされた画像のURL
リクエスト例
curl -X GET "${domain}/nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}/detect?path=https%3A%2F%2Fimagecdn.co.kr%2Fsample_image.jpg"

レスポンス

[レスポンス本文データ]

名前 タイプ 必須 説明
data.totalCount Number O 100 総検索結果数
data.query String O path=https://imagecdn.co.kr/sample_image.jpg 検索クエリ
data.items[].link String O eyJwYXRoIjoHR0cHM6Ly9zMy11cy13ZXN0LTIuW...VlfX0= 検出されたファッションアイテムで類似商品検索で使用する値
data.items[].center float64 array O [0.825047801147227, 0.330948979591837] 検出されたアイテムの中央x, y座標%
data.items[].b0 float64 array O [0.676864247418738, 0.219377551020408] 検出されたアイテムのx0, y0座標%
data.items[].b1 float64 array O [0.973231355525813, 0.4426204081632654] 検出されたアイテムのx1, y1座標%
data.items[].score float32 O 0.9732 検出されたアイテムの信頼度
レスポンス本文の例
{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    },
    "data": {
        "totalCount": 2,
        "query": "path=https%3A%2F%2Fimagecdn.co.kr%2Fsample_image.jpg",
        "items": [{
                "link": "eyJwYXRoIjoHR0cHM6Ly9zMy11cy13ZXN0LTIuW1hem9uYXdzLmNvbS9mZy1pbWFnZS1zZWFyY2gvMjAxOTEyMDIvNDIyMDZmWYtYWI0Ni00Zjk2LThkYWItZGRkZjllMTI3VjLm9jdGV0LXN0cmVbsInR5cGUiOiJBTEwiLCJpbnB1dHMiOlt7ImJveCI6eyJsZWZ0IjozNQsInRvcCI6MTcyLCJ3aWR0aCI6MTU1LCJoZWlnaHQiOjE3NX0sInNjb3JlIjowg4NjAyODcwNzAyNzQzNTMsInR5cGUiOiJKQUNLRVfV0sImNvbmZpZ3MiOnsiY2FtZXJjp0cnVlfX0=",
                "center": [0.825047801172275, 0.330998979591837],
                "b0": [0.676864244718738, 0.219387751020408],
                "b1": [0.973231357555813, 0.4426020401632654],
                "score": 0.97323
            },
            {

                "link": "eyJwYXRoIjoiaHR0cHM6Ly9zMy11cy13ZXN0LTIuW1hem9uYXdzLmNvbS9mZy1pbWFnZSZWFyY2gvMjAxOTEyMDIvNDIyMDZmWYtYWI0Ni00Zjk2LThkYWItZGRkZjllMTI3OWVm9jdGV0LXN0cmSIsInR5cGUiOiJBTEwiLpbnB1dHMiOlt7ImJveCI6eyJsZWZ0IjozNQsInRvcCI6MyLCJ3aWR0aCI6MTU1LCJoZWlnaHQiOjE3NX0sInNjb3JlIjowLjg4NjAyODcwNzAyNzQzNTMsInR5cGUiOiJKQUNLRVQifV0sImNvbmZpZiOnsiY2FtZXJhIjp0cnVlfX0=",
                "center": [0.3929254301032506, 0.572066265306123],
                "b0": [0.3288718929253023, 0.506377551204082],
                "b1": [0.456978967952199, 0.637751020408163],
                "score": 0.97123

            }
        ]
    }
}

エラーコード

resultCode resultMessage 説明
-40000 InvalidParam パラメータにエラーがある
-41000 UnauthorizedAppKey 承認されていないアプリキー
-42000 NotExistService 存在しないサービス
-45020 ImageTooLargeException 画像ファイルのサイズが大きすぎる
画像ガイド参考
-45040 InvalidImageFormatException サポートしない画像ファイル形式
画像ガイド参考
-45050 InvalidImageURLException アクセスできないURL
-45060 ImageTimeoutError 画像ダウンロードタイムアウト
-50000 InternalServerError サーバーエラー

検出されたファッションアイテムで類似商品検索

  • detect APIからレスポンスで受け取ったlinkを基に類似のファッションアイテムを含む商品を検索するAPI

リクエスト

[URI]

メソッド URI
GET /nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}/image

[Path Variable]

名前 説明
appKey 統合アプリキーまたはサービスアプリキー
serviceID サービス名

[URL Parameter]

名前 タイプ 必須 説明
limit int O 100 最大サイズ
1以上200以下に設定可能
link string O eyJwYXRoIjoHR0cHM6Ly9zMy11cy13ZXN0LTIuW...VlfX0%3D detect APIから渡されたlink(URLエンコード必要)
filter.category1_id string X equal:3 category1_id値でフィルタリング
filter.category2_id string X !equal:3 category2_id値でフィルタリング
filter.category3_id string X !equal:3 category3_id値でフィルタリング
filter.s1 string X equal:3 s1値でフィルタリング
filter.s2 string X !equal:3 s2値でフィルタリング
threshold float32 X 0.8 マッチング有無を判断する類似度基準値
data.items[].similarity >= thresholdである項目のみマッチングしていると判断します。
0より上、、1.0以下に設定可能
リクエスト例
curl -X GET "${domain}/nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}/image?limit=100&link=eyJwYXRoIjoiaHR0cHM6Ly9zMy11cy13ZXN0LTIuW1hem9u1XdzLmNvbS9mZy1pbWFnZSZWFyY2gvMjAxOTEyMDIvNDIyMDZmWYtYWI0Ni00Zjk2LThkYWItZGRkZjllMTI3OWVm9jdGV0LXN0cmSIsInR5cGUi0iJBTEwiLpbnB1dHMiOlt7ImJveCI6eyJsZWZ0IjozNQaInRvcCI6MyLCJ3aWR0aCI6MTU1LCJoZWlnaHQiOjE3NX0sInNjb3JlIjowLjg4NjAyODcwNzAyNzQzNTMsInR5cGUiOiJKQUNLRVQifV0sImNvbmZpZiOnsiY2FtZXJhIjp0cnVlfX0%3D&filter.s1=equal:1"

レスポンス

[レスポンス本文データ]

名前 タイプ 必須 説明
data.totalCount Number O 100 総検索結果数
data.query String O link=eyJwYXRoIjoHR0cHM6Ly9zMy11cy13ZXN0LTIuW...VlfX0=&limit=100 検索クエリ
data.items[].similarity Number O 0.91234 検索類似度スコア
data.items[].productID String O 8980335 商品ID
レスポンス本文の例
{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    },
    "data": {
        "totalCount": 100,
        "query": "link=eyJwYXRoIjoiaHR0cHM6Ly9zMy11cy13ZXN0LTIuW1hem9uYXdzLmNvbS9mZy1pbWfnZSZWFyY2gvMjAxOTEyMDIvNDIyMDZmWYtYWI0Ni00Zjk2LThkYWItZGRkZjllMTI3OWVm9jdGV0LXN0cmSIsInR5cGUiOiJBTEwiLpbnB1dHMi0lt7ImJveCI6eyJsZWZ0IjozNQsInRvcCI6MyLCJ3aWa0aCI6MTU1LCJozWlnaHQiOjE3NX0sInNjb3JlIjowLjg4NjAyODcwNzAyNzQzNTMsInR5cGUiOiJKQUNLRVQifV0sImNvbmZpZiOnsiY2FtZXJhIjp0cnVlfX0=&limit=100",
        "items": [{
                "similarity": 0.91234,
                "productID": "8980335"
            },
            {
                "similarity": 0.81234,
                "productID": "7980335"
            }
        ]
    }
}

エラーコード

resultCode resultMessage 説明
-40000 InvalidParam パラメータにエラーがある
-41000 UnauthorizedAppKey 承認されていないアプリキー
-42000 NotExistService 存在しないサービス
-45020 ImageTooLargeException 画像ファイルのサイズが大きすぎる
画像ガイド参考
-45040 InvalidImageFormatException サポートしない画像ファイル形式
画像ガイド参考
-45050 InvalidImageURLException アクセスできないURL
-45060 ImageTimeoutError 画像ダウンロードタイムアウト
-45070 NoDetectedFashionItems 検出されたファッションアイテムがない
-50000 InternalServerError サーバーエラー

ディープタギング

ファッションアイテムタグ検出

  • 入力画像からファッションアイテムのタグ情報を検出するAPI

リクエスト

[URI]

メソッド URI
GET /nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}/tag

[Path Variable]

名前 説明
appKey 統合アプリキーまたはサービスアプリキー
serviceID サービス名

[URL Parameter]

名前 タイプ 必須 説明
path String O https://imagecdn.co.kr/sample_image.jpg URLエンコードされた画像URL
lang String X ko ラベルの言語(デフォルト値: en)
en: English
ko: Korean
jp: Japanese
item_limit int X 3 画像から見つかったファッションアイテムのうち、タグ情報をレスポンスするアイテムの数
アイテムの幅が長い順にソート(デフォルト値:1)
最大サイズ
1以上4以下に設定可能
リクエスト例
curl -X GET "${domain}/nhn-ai-fashion/v1.0/appkeys/{appKey}/service/{serviceID}/tag?path=https%3A%2F%2Fimagecdn.co.kr%2Fsample_image.jpg&lang=ko&item_limit=3"

レスポンス

[レスポンス本文データ]

名前 タイプ 必須 説明
data.totalCount Number O 2 総検索結果数
data.query String O path=https://imagecdn.co.kr/sample_image.jpg&lang=ko&item_limit=3 検索クエリ
data.items[].type String O JACKET 検出されたアイテムのタイプ
data.items[].score float32 O 0.9515 検出されたアイテムの信頼度
data.items[].tags Array of json object O 検出されたアイテムタグ情報の配列
data.items[].tags[].attribute String O category タグのプロパティ
data.items[].tags[].labels Array of json object O タグラベルの配列
data.items[].tags[].labels[].label String O ブラウス| Blouse タグラベル
URLパラメータのlangによってレスポンス言語が変わる
data.items[].tags[].labels[].score float32 O 0.9545 タグラベルの信頼度
data.items[].center float64 array O [0.825047801147227, 0.330948979591837] 検出されたアイテムの中央x, y座標%
data.items[].b0 float64 array O [0.676864247418738, 0.219377551020408] 検出されたアイテムのx0, y0座標%
data.items[].b1 float64 array O [0.973231355525813, 0.4426204081632654] 検出されたアイテムのx1, y1座標%


レスポンス本文の例

{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    },
    "data": {
        "totalCount": 2,
        "query": "path=https%3A%2F%2Fimagecdn.co.kr%2Fsample_image.jpg&lang=ko&item_limit=3",
        "items": [{
            "type": "SHIRT",
            "tags": [{
                "attribute": "category", "labels": [{ "label": "ブラウス", "score": 0.9966272115707397 }]
            }, {
                "attribute": "color", "labels": [{ "label": "ベージュ/アイボリー", "score": 0.7692235112190247 }]
            }, {
                "attribute": "pattern", "labels": [{ "label": "無地", "score": 0.9893960356712341 }]
            }, {
                "attribute": "fabric", "labels": [{ "label": "シルク", "score": 0.586938738822937 }]
            }, {
                "attribute": "neckline", "labels": [{ "label": "シャツの襟", "score": 0.9922573566436768 }]
            }, {
                "attribute": "shoulder", "labels": [{ "label": "バフ/ボリューム", "score": 0.5369117856025696 }]
            }, {
                "attribute": "sleeve_length", "labels": [{ "label": "長袖", "score": 0.6998409032821655 }]
            }, {
                "attribute": "sleeve_shape", "labels": [{ "label": "ストレート", "score": 0.689109206199646 }]
            }, {
                "attribute": "length_up", "labels": [{ "label": "ウエストライン", "score": 0.9575495719909668 }]
            }, {
                "attribute": "age", "labels": [{ "label": "大人", "score": 0.9985153079032898 }]
            }, {
                "attribute": "gender", "labels": [{ "label": "女性", "score": 0.9960111379623413 }]
            }, {
                "attribute": "detail", "labels": [{ "label": "ボタン", "score": 0.9440848231315613 }]
            }, {
                "attribute": "fit", "labels": [{ "label": "基本フィット/レギュラーフィット", "score": 0.789472222328186 }]
            }],
            "center": [ 0.46125, 0.34125 ],
            "b0": [ 0.1875, 0.0175 ],
            "b1": [ 0.735, 0.665 ],
            "score": 0.93118
        }, {
            "type": "SKIRT",
            "tags": [{
                "attribute": "category", "labels": [{ "label": "スカート", "score": 0.9997897744178772 }]
            }, {
                "attribute": "color", "labels": [{ "label": "ブラウン/茶色", "score": 0.8597127199172974 }]
            }, {
                "attribute": "pattern", "labels": [{ "label": "無地", "score": 0.988312304019928 }]
            }, {
                "attribute": "fabric", "labels": [{ "label": "キャンバス", "score": 0.24775846302509308 }]
            }, {
                "attribute": "length_lo", "labels": [{ "label": "ショート", "score": 0.9987099170684814 }]
            }, {
                "attribute": "age", "labels": [{ "label": "大人", "score": 0.9993846416473389 }]
            }, {
                "attribute": "gender", "labels": [{ "label": "女性", "score": 0.9950520396232605 }]
            }, {
                "attribute": "detail", "labels": [{ "label": "ラップスタイル", "score": 0.7058117985725403 }]
            }, {
                "attribute": "fit", "labels": [{ "label": "基本フィット/レギュラーフィット", "score": 0.9844645857810974 }]
            }, {
                "attribute": "shape", "labels": [{ "label": "Aライン/フレア", "score": 0.9432026743888855 }]
            }],
            "center": [ 0.5, 0.69125 ],
            "b0": [ 0.28, 0.445 ],
            "b1": [ 0.72, 0.9375 ],
            "score": 0.939945
        }]
    }
}

エラーコード

resultCode resultMessage 説明
-40000 InvalidParam パラメータにエラーがある
-41000 UnauthorizedAppKey 承認されていないアプリキー
-42000 NotExistService 存在しないサービス
-45020 ImageTooLargeException 画像ファイルのサイズが大きすぎる
画像ガイド参考
-45040 InvalidImageFormatException サポートしない画像ファイル形式
画像ガイド参考
-45050 InvalidImageURLException アクセスできないURL
-45060 ImageTimeoutError 画像ダウンロードタイムアウト
-50000 InternalServerError サーバーエラー

インデックスリクエスト

  • ファッションアイテムデータをインデックスするAPI
  • 渡されたファイルの最初の行を分析して、フォーマットエラーがあるかどうかを検査します。
  • 最初の行にエラーが見つからない場合、インデックスのためのキューに入った後、スケジュールに従ってインデックスが作成されます。

ファイルデータフォーマット

名前 field value type 必須 max length 備考
商品ID product_id string O 72 ユニークキー
状態 status string O 7 enable:追加またはアップデート
disable:削除
商品名 name string O 256 商品名
カテゴリー1depth category1_id string O 72 カテゴリー1depth ID
カテゴリー2depth category2_id string O 72 カテゴリー2depth ID
カテゴリー3depth category3_id string O 72 カテゴリー3depth ID
画像url image_url string O 1000 アクセス可能な画像URL
フィルタ1 s1 string O 72 制限検索のためのフィルタ1
フィルタ2 s2 string O 72 制限検索のためのフィルタ2
JSONLの例
{"product_id": "10001", "status": "enable", "name": "AAA red onepiece", "category1_id": "1", "category2_id": "1", "category3_id": "2", "image_url": "http://aaaaaaa.bbbbb.jpg", "s1": "1", "s2": "2"}
{"product_id": "10002", "status": "disable", "name": "BBB blue onepiece", "category1_id": "1", "category2_id": "1", "category3_id": "2", "image_url": "http://bbbbbbb.ccccc.jpg", "s1": "s1", "s2": "2"}
{"product_id": "10003", "status": "enable", "name": "BBB blue blouse", "category1_id": "1", "category2_id": "1", "category3_id": "3", "image_url": "http://bbbbbbb.ddddd.jpg", "s1": "", "s2": "s2"}
...
CSVの例
10001,enable,AAA red onepiece,1,1,2,http://aaaaaaa.bbbbb.jpg,1,2
10002,disable,BBB blue onepiece,1,1,2,http://bbbbbbb.ccccc.jpg,s1,2
10003,enable,BBB blue blouse,1,1,3,http://bbbbbbb.ddddd.jpg,,s2
...

リクエスト

  • 直接データファイルを送信するか、ダウンロード可能なURLでデータファイルを渡すことができます。

[URI]

メソッド URI
POST /nhn-ai-fashion-maker/v1.0/appkeys/{appKey}/service/{serviceID}/index

[Path Variable]

名前 説明
appKey 統合アプリキーまたはサービスアプリキー
serviceID サービス名

[URL Parameter]

名前 タイプ 必須 説明
format string O jsonl jsonlまたはcsv

[Request Body]

Content-Type : multipart/form-data

名前 タイプ 必須かどうか 説明
link string "https://cdn.my-domain.com/202106251000_product.jsonl" データファイルURL
file file @filename データファイル
linkがfileより優先順位が高く、linkがあればfileは無視されます。
リクエスト例1
curl -X POST "/nhn-ai-fashion-maker/v1.0/appkeys/{appKey}/service/{serviceID}/index?format=jsonl" -H "Content-Type: multipart/form-data" -F "file=@/home/user1/202106251000_product.jsonl"
リクエスト例2
curl -X POST "/nhn-ai-fashion-maker/v1.0/appkeys/{appKey}/service/{serviceID}/index?format=jsonl" -F "link=https://cdn.my-domain.com/202106251000_product.jsonl"

レスポンス

[レスポンス本文データ]

名前 タイプ 必須 説明
data.indexID string O 24bb94b3-8a6b-488e-b038-4f6038da2596 インデックスID
レスポンス本文の例
{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    },
    "data": {
        "indexID": "24bb94b3-8a6b-488e-b038-4f6038da2596"
    }
}

エラーコード

resultCode resultMessage 説明
-40000 InvalidParam パラメータにエラーがある
-40010 InvalidFileError ファイル転送にエラーがある場合
-40020 NoDataError 転送されたファイルが空のファイルである場合
-40030 ExceedDataSizeError 転送されたファイルが定められた容量または定められたデータ数を超過した場合
-40080 TooManyRequestError 同時に複数のリクエストを行った場合
-41000 UnauthorizedAppKey 承認されていないアプリキー
-42000 NotExistService 存在しないサービス
-50000 InternalServerError サーバーエラー

サービス情報照会

  • サービスの情報を取得するAPI
  • サービスごとに残っているインデックス回数
  • サービス別にインデックスされた文書の数

リクエスト

[URI]

メソッド URI
GET /nhn-ai-fashion-maker/v1.0/appkeys/{appKey}/services

[Path Variable]

名前 説明
appKey 統合アプリキーまたはサービスアプリキー
リクエスト例
curl -X GET "/nhn-ai-fashion-maker/v1.0/appkeys/{appKey}/services"

レスポンス

[レスポンス本文データ]

名前 タイプ 必須 説明
data.totalService int O 3 サービス数
data.items[].documentCnt int O 51128 全文書数
data.items[].remainInsertCnt int O 3 サービスごとのインデックスリクエスト可能回数
data.items[].service string O aaa サービス名
レスポンス本文の例
{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    },
    "data": {
        "totalService": 3,
        "items": [
            {
                "service": "aaa",
                "remainInsertCnt": 3,
                "documentCnt": 51128
            },
            {
                "service": "bbb",
                "remainInsertCnt": 2,
                "documentCnt": 9778
            },
            {
                "service": "ccc",
                "remainInsertCnt": 0,
                "documentCnt": 29841
            }
        ]
    }
}

エラーコード

resultCode resultMessage 説明
-40000 InvalidParam パラメータにエラーがある
-41000 UnauthorizedAppKey 承認されていないアプリキー
-50000 InternalServerError サーバーエラー

インデックスリスト照会

  • リクエストされたインデックスリストを取得するAPI
  • インデックスリクエストに関する情報を知ることができます。
  • インデックス情報の最大保管期間は登録時間基準6か月です。

リクエスト

[URI]

メソッド URI
GET /nhn-ai-fashion-maker/v1.0/appkeys/{appKey}/service/{serviceID}/indexes

[Path Variable]

名前 説明
appKey 統合アプリキーまたはサービスアプリキー
serviceID サービス名

[URL Parameter]

名前 タイプ 必須 説明
start int O 0 開始インデックス
0から開始
limit int O 100 最大100
start:0, limit: 100の場合は1から100まで
start: 200, limit: 100の場合は201から300まで
order string X reservedTime:desc ソート条件(デフォルト値: requestedTime:desc)
設定可能条件はソート参照
status string X finished インデックスの状態値

ページング

  • startとlimitパラメータでページングが可能です。
  • start: 0から開始します。
  • limit: 0より大きく、最大100まで可能です。
  • 最大ページング可能な数字は1000です。
  • 可能:
    • start: 900
    • end: 100
  • 不可:
    • start: 901
    • end: 100
    • 最大可能なページング数である1000を超えるので不可能です。

ソート

  • レスポンス文書のソートパラメータ
  • パラメータ形式
  • {ソート可能項目}:{ソート方式}
  • ソート可能項目
  • reservedTime:インデックスリクエスト登録時間
  • startTime:インデックス開始時間
  • finishTime:インデックス終了時間
  • addCnt:追加された文書数
  • failCnt:失敗文書数
  • deleteCnt:削除文書数
  • updateCnt:修正文書数
  • totalCnt:全文書数
  • ソート方式
  • asc:昇順
  • desc:降順

インデックス状態

  • インデックス状態値を条件として検索できます。
  • reserved:待機
  • running:進行中
  • failed:全体失敗
  • finished:完了(部分失敗を含む)
リクエスト例
curl -X GET "/nhn-ai-fashion-maker/v1.0/appkeys/{appKey}/service/{serviceID}/indexes?start=0&limit=100&status=running&order=startTime:desc"

レスポンス

[レスポンス本文データ]

名前 タイプ 必須 説明
data.total int O 100 検索された全文書数
data.items[].service String O testserviceid 該当インデックスリクエストが発生したサービス名
data.items[].id String O 24bb94b3-8a6b-488e-b038-4f6038da2596 インデックスID
data.items[].filename String O 202106251000_product.jsonl インデックスファイル名
data.items[].status string O reserved 現在のインデックス状態を表します。
reserved:待機
running:進行中
failed:全て失敗
finished:完了(部分失敗含む)
data.items[].reservedTime unix timestamp O 1625098033 インデックスリクエストの登録時間
data.items[].startTime unix timestamp O 1625098033 インデックス開始時間
data.items[].finishTime unix timestamp O 1625098033 インデックスが完了した時間
data.items[].addCnt Int O 234 追加された文書数
data.items[].failCnt Int O 31 失敗した文書数
画像ダウンロード失敗などが含まれ、ファッションアイテムが見つからない場合も含む。
data.items[].deleteCnt Int O 31 削除された文書数
data.items[].updateCnt int O 592 修正された文書数
data.items[].totalCnt Int O 888 インデックスの総文書数
レスポンス本文の例
{
    "header": {
        "isSuccessful": true,
        "resultCode": 0,
        "resultMessage": "SUCCESS"
    },
    "data": {
        "total": 100,
        "items":[{
            "service": "testserviceid",
            "id": "24bb94b3-8a6b-488e-b038-4f6038da2596",
            "filename": "202106251000_product.jsonl",
            "status": "reserved",
            "reservedTime": 1627018935,
            "startTime": 1627018935,
            "finishTime": 1627018935,
            "addCnt": 234,
            "failCnt": 31,
            "deleteCnt": 31,
            "updateCnt": 592,
            "totalCnt": 888
        }]
    }
}

エラーコード

resultCode resultMessage 説明
-40000 InvalidParam パラメータにエラーがある
-41000 UnauthorizedAppKey 承認されていないアプリキー
-42000 NotExistService 存在しないサービス
-50000 InternalServerError サーバーエラー
TOP