メインコンテンツへスキップ
Olostepの/v1/schedulesエンドポイントを通じて、指定された時間に自動的に実行されるようにAPIコールをスケジュールできます。cron式や自然言語を使用して、一度だけの実行や定期的なタスクをスケジュールします。
  • 特定の日時に一度だけの実行をスケジュール
  • cron式を使用して定期的なスケジュールを作成
  • 自然言語テキストを使用して自動的にcron式を生成
  • HTTPエンドポイント(GETまたはPOST)をスケジュール
  • POSTリクエストの場合、短縮形式のOlostepエンドポイント(自動的にプレフィックスされる)またはフルURLを使用
  • 任意のペイロードを渡すことが可能 - ペイロードは指定した通りに送信されます
  • スケジュールのライフサイクルを自動的に管理
APIの詳細については、Schedule Endpoint API Referenceを参照してください。

インストール

# pip install requests

import requests

スケジュールを作成

APIコールを自動的に実行するスケジュールを作成します。一度だけのスケジュールやcron式を使用した定期的なスケジュールを作成できます。endpointは任意のURLに設定可能で(Olostepエンドポイントに限定されません)、payloadには送信したい任意のデータを含めることができます。

一度だけのスケジュール

特定の日時に一度だけ実行されるAPIコールをスケジュールします。
import requests
import json
from datetime import datetime, timedelta

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

# 1時間後にスクレイプを実行するスケジュール
execute_at = (datetime.now() + timedelta(hours=1)).isoformat()

payload = {
    "method": "POST",
    "endpoint": "v1/scrapes",
    "payload": {
        "url_to_scrape": "https://example.com",
        "formats": ["markdown"]
    },
    "execute_at": execute_at,
    "expression_timezone": "UTC"
}

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

response = requests.post(f"{API_URL}/schedules", headers=headers, json=payload)
print(json.dumps(response.json(), indent=2))

cron式を使用した定期的なスケジュール

cron式を使用して定期的なスケジュールを作成します。cron式は6つのフィールド形式を使用します: 分 時 日 月 曜日 年。
import requests
import json

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

# 毎日午前10時にスクレイプを実行するスケジュール
payload = {
    "method": "POST",
    "endpoint": "v1/scrapes",
    "payload": {
        "url_to_scrape": "https://example.com",
        "formats": ["markdown"]
    },
    "cron_expression": "0 10 * * ? *",
    "expression_timezone": "UTC"
}

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

response = requests.post(f"{API_URL}/schedules", headers=headers, json=payload)
print(json.dumps(response.json(), indent=2))

自然言語によるスケジューリング

自然言語テキストを使用してcron式を自動的に生成します。システムはあなたのテキストを有効なcron式に変換します。
import requests
import json

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

# 自然言語を使用したスケジュール
payload = {
    "method": "POST",
    "endpoint": "v1/scrapes",
    "payload": {
        "url_to_scrape": "https://example.com",
        "formats": ["markdown"]
    },
    "text": "every 3 minutes",
    "expression_timezone": "UTC"
}

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

response = requests.post(f"{API_URL}/schedules", headers=headers, json=payload)
print(json.dumps(response.json(), indent=2))

レスポンス形式

スケジュールを作成すると、次のプロパティを持つスケジュールオブジェクトが返されます:
{
  "id": "schedule_abc123xyz",
  "object": "schedule"
  "type": "recurring",
  "method": "POST",
  "endpoint": "v1/scrapes",
  "cron_expression": "0 10 * * ? *",
  "expression_timezone": "UTC",
  "created": "2025-01-15T10:00:00.000Z"
}
一度だけのスケジュールの場合、レスポンスにはcron_expressionの代わりにexecute_atが含まれます:
{
  "id": "schedule_abc123xyz",
  "object": "schedule"
  "type": "onetime",
  "method": "POST",
  "endpoint": "v1/scrapes",
  "execute_at": "2025-01-15T10:00:00.000Z",
  "expression_timezone": "UTC",
  "created": "2025-01-15T09:00:00.000Z"
}

スケジュール一覧

チームのすべてのスケジュールを取得します。デフォルトでは、削除されたスケジュールは除外されます。include_deletedクエリパラメータを使用してそれらを含めることができます。
import requests
import json

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

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.get(f"{API_URL}/schedules", headers=headers)
result = response.json()
print(f"Total schedules: {result['count']}")
for schedule in result['schedules']:
    print(json.dumps(schedule, indent=2))

# 削除されたスケジュールを含めるには:
# response = requests.get(f"{API_URL}/schedules?include_deleted=true", headers=headers)

スケジュールを取得

IDによって単一のスケジュールを取得します。
import requests
import json

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

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.get(f"{API_URL}/schedules/{schedule_id}", headers=headers)
print(json.dumps(response.json(), indent=2))

スケジュールを削除

IDによってスケジュールを削除します。これにより、将来の実行が停止されます。
import requests
import json

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

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.delete(f"{API_URL}/schedules/{schedule_id}", headers=headers)
print(json.dumps(response.json(), indent=2))

対応エンドポイント

Olostepエンドポイント(短縮形式)

POSTリクエストの場合、Olostepエンドポイントの短縮形式を使用できます。システムはこれらに自動的にhttps://api.olostep.com/をプレフィックスします:
  • v1/scrapes - ウェブスクレイピングタスクをスケジュール
  • v1/batches - バッチ処理ジョブをスケジュール
  • v1/crawls - ウェブサイトクロール操作をスケジュール
  • v1/maps - 地図データ抽出をスケジュール
  • v1/answers - 回答生成をスケジュール

フルURL

エンドポイントにフルURLを提供することもできます。これは外部APIやWebhookに必要です:
import requests
import json
from datetime import datetime, timedelta

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

# 外部APIへのコールをスケジュール
payload = {
    "method": "POST",
    "endpoint": "https://api.example.com/webhook",
    "payload": {
        "custom_field": "any value",
        "data": {"nested": "structure"},
        "timestamp": datetime.now().isoformat()
    },
    "execute_at": (datetime.now() + timedelta(hours=1)).isoformat(),
    "expression_timezone": "UTC"
}

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

response = requests.post(f"{API_URL}/schedules", headers=headers, json=payload)
print(json.dumps(response.json(), indent=2))
payloadフィールドは任意のJSONオブジェクトを受け入れます - ターゲットエンドポイントに必要なように構造化できます。

Cron式の形式

Cron式は6つのフィールド形式を使用します:
minute hour day month day-of-week year
例:
  • 0/3 * * * ? * - 3分ごと
  • 0 10 * * ? * - 毎日午前10時
  • 0 9 ? * MON * - 毎週月曜日午前9時
  • 0 0 1 * ? * - 毎月1日の午前0時
指定されていない場合、day-of-monthまたはday-of-weekには?を使用します。

自然言語の例

自然言語を使用してスケジュールを記述できます。システムは自動的にそれをcron式に変換します:
  • “every 3 minutes” → 0/3 * * * ? *
  • “every day at 10am” → 0 10 * * ? *
  • “every Monday at 9am” → 0 9 ? * MON *
  • “every hour” → 0 * * * ? *
  • “every week on Monday” → 0 0 ? * MON *

重要な注意事項

  • 一度だけのスケジュールは実行後に自動的に削除されます
  • 定期的なスケジュールは手動で削除されるまで続行されます
  • タイムゾーンは有効なIANAタイムゾーン識別子である必要があります(例:“UTC”、“America/New_York”、“Europe/London”)
  • execute_at日時は未来でなければなりません
  • 自然言語変換は再試行が必要な場合があります。システムは最大3回試行します
  • 自然言語テキスト(textパラメータ)を使用する場合、タイムゾーンはデフォルトで”UTC”になります
  • スケジュールは指定されたペイロードでAPIコールを正確に実行します - 必要なJSON構造を渡すことができます
  • POSTリクエストの場合、短縮形式のOlostepエンドポイント(v1/scrapesv1/batchesv1/crawlsv1/mapsv1/answers)には自動的にhttps://api.olostep.com/がプレフィックスされます
  • 他のエンドポイントの場合、フルURLを提供してください
  • payloadには任意のデータ構造を含めることができます - ターゲットエンドポイントにそのまま送信されます
  • 既に削除されたスケジュールを削除すると400エラーが返されます

料金

スケジュール自体は無料です。スケジュールが実行されるときに実行されるAPIコールに対してのみ料金が発生します。例えば、スクレイプをスケジュールした場合、実行ごとに1クレジット(またはパーサーやLLM抽出を使用する場合はそれ以上)が課金されます。