メインコンテンツへスキップ
Olostepの/v1/filesエンドポイントを通じて、APIリクエストのコンテキストとして使用できるJSONファイルをアップロードできます。これにより、構造化されたデータを提供して、スクレイプ、回答、その他の操作を強化することができます。
  • 最大200MBのJSONファイルをアップロード可能
  • ファイルは自動的に正しいJSON形式であることが検証されます
  • スクレイプ、回答、その他のエンドポイントでコンテキストとしてファイルを使用
  • ファイルは30日後に期限切れ
  • 安全な事前署名付きURLアップロードプロセス
APIの詳細については、ファイルエンドポイントAPIリファレンスを参照してください。

インストール

# pip install requests

import requests

ファイルをアップロードする

ファイルのアップロードプロセスは2つのステップで構成されます:
  1. アップロードURLを作成: ファイルをアップロードするための事前署名付きURLをリクエスト
  2. アップロードを完了: 事前署名付きURLにファイルをアップロードし、検証と最終化のために完了エンドポイントを呼び出す

ステップ1: アップロードURLを作成

まず、ファイル名とオプションの目的を提供してアップロードURLを作成します。purposeパラメータは、"context"(デフォルト)または"batch"の2つの値のみをサポートします。
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

# ステップ1: アップロードURLを作成
payload = {
    "filename": "my-data.json",
    "purpose": "context"  # オプション、デフォルトは "context"。サポートされる値: "context" または "batch"
}

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.post(f"{API_URL}/files", headers=headers, json=payload)
upload_data = response.json()

print(json.dumps(upload_data, indent=2))
# レスポンスには: id, upload_url, expires_in が含まれます
レスポンスには、10分後に期限切れとなる事前署名付きupload_urlが含まれます:
{
  "id": "file_abc123xyz789",
  "object": "file.upload",
  "created": 1760329882,
  "upload_url": "https://olostep-files.s3.amazonaws.com/files/...",
  "expires_in": 600
}

ステップ2: ファイルをアップロードして完了

事前署名付きURLにJSONファイルをアップロードし、アップロードを検証して最終化するために完了エンドポイントを呼び出します。
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

# ステップ1からのupload_urlを取得した後
file_id = upload_data["id"]
upload_url = upload_data["upload_url"]

# JSONデータを準備
json_data = {
    "users": [
        {"name": "John Doe", "email": "john@example.com"},
        {"name": "Jane Smith", "email": "jane@example.com"}
    ]
}

# ステップ2a: 事前署名付きURLにファイルをアップロード
upload_response = requests.put(
    upload_url,
    data=json.dumps(json_data),
    headers={"Content-Type": "application/json"}
)
upload_response.raise_for_status()

# ステップ2b: アップロードを完了
complete_response = requests.post(
    f"{API_URL}/files/{file_id}/complete",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
file_info = complete_response.json()

print(json.dumps(file_info, indent=2))
完了エンドポイントはJSONファイルを検証し、ファイルメタデータを返します:
{
  "id": "file_abc123xyz789",
  "object": "file",
  "created": 1760329882,
  "filename": "my-data.json",
  "bytes": 1024,
  "purpose": "context",
  "status": "completed"
}

IDでファイルメタデータを取得

IDでファイルのメタデータを取得します。
file_id = "file_abc123xyz789"
response = requests.get(
    f"{API_URL}/files/{file_id}",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
file_info = response.json()
print(json.dumps(file_info, indent=2))

IDでファイルオブジェクトを取得

完了したファイルのJSONコンテンツをダウンロードするための事前署名付きURLを取得します。expires_inクエリパラメータを使用してダウンロードURLの有効期限を指定することもできます(デフォルトは600秒/10分)。
file_id = "file_abc123xyz789"
# ダウンロードURLを取得(デフォルトの有効期限: 600秒)
response = requests.get(
    f"{API_URL}/files/{file_id}/content",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
download_info = response.json()
download_url = download_info["download_url"]

# 事前署名付きURLを使用してファイルコンテンツをダウンロード
file_response = requests.get(download_url)
file_content = file_response.json()
print(json.dumps(file_content, indent=2))

# カスタム有効期限(3600秒 = 1時間)の例
response = requests.get(
    f"{API_URL}/files/{file_id}/content?expires_in=3600",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
download_info = response.json()
print(f"ダウンロードURLの有効期限: {download_info['expires_in']} 秒")
レスポンスには、指定された時間後に期限切れとなる事前署名付きdownload_urlが含まれます:
{
  "id": "file_abc123xyz789",
  "object": "file",
  "created": 1760329882,
  "filename": "my-data.json",
  "bytes": 1024,
  "download_url": "https://olostep-files.s3.amazonaws.com/files/...",
  "expires_in": 600
}

ファイルを一覧表示

チームのすべての完了したファイルを一覧表示します。オプションで目的によってフィルタリングできます(サポートされる値: "context"または"batch")。
# すべてのファイルを一覧表示
response = requests.get(
    f"{API_URL}/files",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
files = response.json()
print(json.dumps(files, indent=2))

# 目的によってフィルタリングされたファイルを一覧表示
response = requests.get(
    f"{API_URL}/files?purpose=context",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
context_files = response.json()
print(json.dumps(context_files, indent=2))
レスポンスにはファイルのリストが含まれます:
{
  "object": "list",
  "data": [
    {
      "id": "file_abc123xyz789",
      "object": "file",
      "created": 1760329882,
      "filename": "my-data.json",
      "bytes": 1024,
      "purpose": "context",
      "status": "completed"
    }
  ]
}

ファイルを削除

ストレージからファイルとその関連データを削除します。
file_id = "file_abc123xyz789"
response = requests.delete(
    f"{API_URL}/files/{file_id}",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
result = response.json()
print(json.dumps(result, indent=2))

完了したアップロードの例(コンテキスト目的)

こちらはpurpose="context"でJSONファイルをアップロードする完全な例です:
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

# ステップ1: アップロードURLを作成
create_response = requests.post(
    f"{API_URL}/files",
    headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
    json={"filename": "user-data.json", "purpose": "context"}
)
upload_data = create_response.json()
file_id = upload_data["id"]
upload_url = upload_data["upload_url"]

# ステップ2: JSONデータを準備してアップロード
json_data = {
    "users": [
        {"id": 1, "name": "Alice", "role": "admin"},
        {"id": 2, "name": "Bob", "role": "user"}
    ]
}

upload_response = requests.put(
    upload_url,
    data=json.dumps(json_data),
    headers={"Content-Type": "application/json"}
)
upload_response.raise_for_status()

# ステップ3: アップロードを完了
complete_response = requests.post(
    f"{API_URL}/files/{file_id}/complete",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
file_info = complete_response.json()

print(f"ファイルが正常にアップロードされました: {file_info['id']}")
print(f"ファイルサイズ: {file_info['bytes']} バイト")

バッチファイルのアップロード例

こちらはpurpose="batch"でJSONファイルをアップロードし、/v1/batchesエンドポイントで使用できる有効なバッチデータを含む例です:
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

# ステップ1: purpose="batch"でアップロードURLを作成
create_response = requests.post(
    f"{API_URL}/files",
    headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
    json={"filename": "batch-items.json", "purpose": "batch"}
)
upload_data = create_response.json()
file_id = upload_data["id"]
upload_url = upload_data["upload_url"]

# ステップ2: バッチJSONデータを準備(/v1/batchesエンドポイントの有効な形式)
batch_data = {
    "items": [
        {"custom_id": "item-1", "url": "https://www.google.com/search?q=stripe&gl=us&hl=en"},
        {"custom_id": "item-2", "url": "https://www.google.com/search?q=paddle&gl=us&hl=en"},
        {"custom_id": "item-3", "url": "https://www.google.com/search?q=payment+gateway&gl=us&hl=en"}
    ],
    "parser": {"id": "@olostep/google-search"},
    "country": "US"
}

upload_response = requests.put(
    upload_url,
    data=json.dumps(batch_data),
    headers={"Content-Type": "application/json"}
)
upload_response.raise_for_status()

# ステップ3: アップロードを完了
complete_response = requests.post(
    f"{API_URL}/files/{file_id}/complete",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
file_info = complete_response.json()

print(f"バッチファイルが正常にアップロードされました: {file_info['id']}")
print(f"ファイルサイズ: {file_info['bytes']} バイト")
print(f"目的: {file_info['purpose']}")
アップロードされたバッチファイルには、/v1/batchesエンドポイント形式に一致する有効なJSON構造が含まれています:
  • items: custom_idurlフィールドを持つオブジェクトの配列
  • parser: オプションのパーサー設定
  • country: オプションの国コード
このファイルはバッチ処理操作の入力として使用できます。

ファイル要件

  • ファイル形式: JSONファイルのみサポート(.json拡張子が必要)
  • ファイルサイズ: ファイルごとに最大200MB
  • 有効期限: ファイルは30日後に期限切れ
  • アップロードURL: 事前署名付きURLは10分後に期限切れ
  • 目的パラメータ: "context"または"batch"の値のみサポート(デフォルトは"context"

価格

ファイルのアップロードは無料です。ファイルは安全に保存され、30日後に自動的に期限切れとなります。