このAPIはClient SDKキー(osk_プレフィックス)で認証します。
すべてのリクエストにAuthorization: Bearer {CLIENT_SDK_KEY}ヘッダーが必要です。
ペルソナ登録
AIパーソナライズ用のペルソナを登録します。
リクエスト
リクエストボディは任意のJSONオブジェクトを受け付けます。すべてのフィールドはそのまま保存され、ペルソナチャット時にモデルコンテキストとして提供されます。
{
"name": "田中太郎",
"age": 40,
"gender": "M",
"locale": "ja",
"store_id": "store_abc123",
"preference": {
"style": "casual",
"interests": ["tech", "travel"]
}
}
リクエストボディにスキーマ制限はありません。送信されたデータはそのまま保存され、ペルソナチャット時にモデルコンテキストとして活用されます。
レスポンス
{
"success": true,
"data": {
"persona_id": "d28fd898-bfa0-4444-be38-c0655f5f8307"
}
}
ペルソナ情報取得
GET /v1/persona/{persona_id}
レスポンス
{
"success": true,
"data": {
"persona_id": "d28fd898-bfa0-4444-be38-c0655f5f8307",
"data": {
"name": "田中太郎",
"age": 40,
"gender": "M",
"locale": "ja",
"store_id": "store_abc123",
"preference": {
"style": "casual",
"interests": ["tech", "travel"]
}
}
}
}
ペルソナ情報更新
PUT /v1/persona/{persona_id}
リクエストボディは任意のJSONオブジェクトを受け付けます。新しいフィールドは既存データにマージされます。
リクエスト
{
"locale": "ja",
"preference": {
"style": "formal"
}
}
レスポンス
取得レスポンスと同じ形式で、新しいフィールドが既存データにマージされた結果が返されます。
ペルソナ削除
DELETE /v1/persona/{persona_id}
ソフトデリートされます。削除されたペルソナの情報がレスポンスとして返されます。
レスポンス
{
"success": true,
"data": {
"persona_id": "d28fd898-bfa0-4444-be38-c0655f5f8307",
"data": {
"name": "田中太郎",
"age": 40,
"gender": "M",
"locale": "ja",
"store_id": "store_abc123",
"preference": {
"style": "casual",
"interests": ["tech", "travel"]
}
}
}
}
ステータス取得
GET /v1/persona/{persona_id}/status
ペルソナの現在のステータスを取得します。CHATステータスの場合、進行中のスレッドIDが含まれます。
レスポンス
{
"success": true,
"data": {
"persona_id": "d28fd898-bfa0-4444-be38-c0655f5f8307",
"status": "CHAT",
"current_thread_id": "thr_a1b2c3d4e5f6",
"last_active_at": "2026-04-16T10:30:00Z"
}
}
ステータス種類
| ステータス | 説明 |
|---|
READY | 待機中(チャット可能) |
CHAT | チャット進行中 |
SHOPPING | ショッピング中 |
PAYMENT | 決済進行中 |
COMPLETE | 完了 |
コード例
Swift (iOS)
// ペルソナ登録
let url = URL(string: "https://api.ones1ght.com/v1/persona")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer \(sdkKey)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let body: [String: Any] = [
"name": "田中太郎",
"age": 40,
"gender": "M",
"locale": "ja",
"store_id": "store_abc123",
"preference": [
"style": "casual",
"interests": ["tech", "travel"]
]
]
request.httpBody = try JSONSerialization.data(withJSONObject: body)
let (data, _) = try await URLSession.shared.data(for: request)
let result = try JSONDecoder().decode(PersonaResponse.self, from: data)
let personaId = result.data.persona_id
curl
# 登録
curl -X POST https://api.ones1ght.com/v1/persona \
-H "Authorization: Bearer $SDK_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "田中太郎", "age": 40, "locale": "ja", "store_id": "store_abc123", "preference": {"style": "casual"}}'
# ステータス取得
curl https://api.ones1ght.com/v1/persona/$PERSONA_ID/status \
-H "Authorization: Bearer $SDK_KEY"