Zum Hauptinhalt springen
Über den Olostep-Endpunkt /v1/schedules kannst du API-Aufrufe planen, die automatisch zu festgelegten Zeiten ausgeführt werden. Plane einmalige Ausführungen oder wiederkehrende Aufgaben mit Cron-Ausdrücken oder natürlicher Sprache.
  • Plane einmalige Ausführungen zu einem bestimmten Datum und Uhrzeit
  • Erstelle wiederkehrende Zeitpläne mit Cron-Ausdrücken
  • Verwende natürliche Sprache, um automatisch Cron-Ausdrücke zu generieren
  • Plane HTTP-Endpunkte (GET oder POST)
  • Für POST-Anfragen verwende kurze Olostep-Endpunkte (automatisch vorangestellt) oder vollständige URLs
  • Übermittle beliebige Nutzdaten - die Nutzdaten werden genau so gesendet, wie du sie angibst
  • Verwalte den Lebenszyklus des Zeitplans automatisch
Für API-Details siehe die Schedule Endpoint API Reference.

Installation

# pip install requests

import requests

Erstelle einen Zeitplan

Erstelle einen Zeitplan, um API-Aufrufe automatisch auszuführen. Du kannst einmalige oder wiederkehrende Zeitpläne mit Cron-Ausdrücken erstellen. Der endpoint kann jede URL sein (nicht auf Olostep-Endpunkte beschränkt), und die payload kann beliebige Daten enthalten, die du senden möchtest.

Einmaliger Zeitplan

Plane einen API-Aufruf, der einmal zu einem bestimmten Datum und Uhrzeit ausgeführt wird.
import requests
import json
from datetime import datetime, timedelta

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

# Plane einen Scrape, der in 1 Stunde ausgeführt wird
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))

Wiederkehrender Zeitplan mit Cron-Ausdruck

Erstelle einen wiederkehrenden Zeitplan mit einem Cron-Ausdruck. Cron-Ausdrücke verwenden ein 6-Felder-Format: Minute Stunde Tag Monat Wochentag Jahr.
import requests
import json

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

# Plane einen Scrape, der jeden Tag um 10 Uhr UTC ausgeführt wird
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))

Planung mit natürlicher Sprache

Verwende natürliche Sprache, um automatisch Cron-Ausdrücke zu generieren. Das System wandelt deinen Text in einen gültigen Cron-Ausdruck um.
import requests
import json

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

# Plane mit natürlicher Sprache
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))

Antwortformat

Wenn du einen Zeitplan erstellst, erhältst du ein Zeitplan-Objekt mit den folgenden Eigenschaften:
{
  "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"
}
Für einmalige Zeitpläne enthält die Antwort execute_at anstelle von cron_expression:
{
  "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"
}

Zeitpläne auflisten

Rufe alle Zeitpläne für dein Team ab. Standardmäßig werden gelöschte Zeitpläne herausgefiltert. Verwende den include_deleted Abfrageparameter, um sie einzuschließen.
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))

# Um gelöschte Zeitpläne einzuschließen:
# response = requests.get(f"{API_URL}/schedules?include_deleted=true", headers=headers)

Einen Zeitplan abrufen

Rufe einen einzelnen Zeitplan anhand seiner ID ab.
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))

Einen Zeitplan löschen

Lösche einen Zeitplan anhand seiner ID. Dies stoppt alle zukünftigen Ausführungen.
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))

Unterstützte Endpunkte

Olostep-Endpunkte (Kurzform)

Für POST-Anfragen kannst du Kurzformen für Olostep-Endpunkte verwenden. Das System wird automatisch https://api.olostep.com/ für diese voranstellen:
  • v1/scrapes - Plane Web-Scraping-Aufgaben
  • v1/batches - Plane Batch-Verarbeitungsjobs
  • v1/crawls - Plane Website-Crawling-Operationen
  • v1/maps - Plane Kartendatenextraktion
  • v1/answers - Plane Antwortgenerierung

Vollständige URLs

Du kannst auch vollständige URLs für deine Endpunkte angeben. Dies ist erforderlich für externe APIs oder Webhooks:
import requests
import json
from datetime import datetime, timedelta

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

# Plane einen Aufruf zu einer externen 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))
Das payload-Feld akzeptiert jedes JSON-Objekt - du kannst es so strukturieren, wie du es für deinen Zielendpunkt benötigst.

Cron-Ausdrucksformat

Cron-Ausdrücke verwenden ein 6-Felder-Format:
Minute Stunde Tag Monat Wochentag Jahr
Beispiele:
  • 0/3 * * * ? * - Alle 3 Minuten
  • 0 10 * * ? * - Jeden Tag um 10:00 Uhr
  • 0 9 ? * MON * - Jeden Montag um 9:00 Uhr
  • 0 0 1 * ? * - Erster Tag jedes Monats um Mitternacht
Verwende ? für Tag des Monats oder Wochentag, wenn nicht angegeben.

Beispiele für natürliche Sprache

Du kannst natürliche Sprache verwenden, um Zeitpläne zu beschreiben. Das System wird sie automatisch in Cron-Ausdrücke umwandeln:
  • “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 *

Wichtige Hinweise

  • Einmalige Zeitpläne werden nach der Ausführung automatisch gelöscht
  • Wiederkehrende Zeitpläne laufen weiter, bis sie manuell gelöscht werden
  • Die Zeitzone muss ein gültiger IANA-Zeitzonenbezeichner sein (z.B. “UTC”, “America/New_York”, “Europe/London”)
  • Das execute_at-Datum muss in der Zukunft liegen
  • Die Umwandlung natürlicher Sprache kann Wiederholungen erfordern; das System wird bis zu 3 Mal versuchen
  • Bei Verwendung von natürlichem Sprachtext (Parameter text) ist die Standardzeitzone “UTC”
  • Zeitpläne führen den API-Aufruf mit den bereitgestellten Nutzdaten genau so aus, wie angegeben - du kannst jede benötigte JSON-Struktur übergeben
  • Für POST-Anfragen werden Kurzformen von Olostep-Endpunkten (v1/scrapes, v1/batches, v1/crawls, v1/maps, v1/answers) automatisch mit https://api.olostep.com/ vorangestellt
  • Für andere Endpunkte gib die vollständige URL an
  • Das payload kann jede Datenstruktur enthalten - es wird unverändert an deinen Zielendpunkt gesendet
  • Das Löschen eines bereits gelöschten Zeitplans führt zu einem 400-Fehler

Preisgestaltung

Zeitpläne selbst sind kostenlos. Du zahlst nur für die API-Aufrufe, die ausgeführt werden, wenn der Zeitplan läuft. Zum Beispiel, wenn du einen Scrape planst, wird dir 1 Kredit pro Ausführung berechnet (oder mehr, wenn Parser oder LLM-Extraktion verwendet werden).