Naar hoofdinhoud gaan
Via het Olostep /v1/schedules eindpunt kun je API-aanroepen plannen om automatisch op gespecificeerde tijden uit te voeren. Plan eenmalige uitvoeringen of terugkerende taken met behulp van cron-expressies of natuurlijke taal.
  • Plan eenmalige uitvoeringen op een specifieke datum en tijd
  • Maak terugkerende schema’s met behulp van cron-expressies
  • Gebruik natuurlijke taal om automatisch cron-expressies te genereren
  • Plan HTTP-eindpunten (GET of POST)
  • Voor POST-verzoeken, gebruik korte Olostep-eindpunten (automatisch voorvoegsel) of volledige URL’s
  • Verstuur elke gewenste payload - de payload wordt precies zoals je het specificeert verzonden
  • Beheer automatisch de levenscyclus van het schema
Voor API-details zie de Schedule Endpoint API Reference.

Installatie

# pip install requests

import requests

Maak een schema

Maak een schema om API-aanroepen automatisch uit te voeren. Je kunt eenmalige schema’s of terugkerende schema’s maken met behulp van cron-expressies. Het endpoint kan elke URL zijn (niet beperkt tot Olostep-eindpunten), en de payload kan alle gegevens bevatten die je wilt verzenden.

Eenmalig schema

Plan een API-aanroep om eenmaal op een specifieke datum en tijd uit te voeren.
import requests
import json
from datetime import datetime, timedelta

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

# Plan een scrape om over 1 uur uit te voeren
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))

Terugkerend schema met cron-expressie

Maak een terugkerend schema met behulp van een cron-expressie. Cron-expressies gebruiken een formaat van 6 velden: minuut uur dag maand dag-van-de-week jaar.
import requests
import json

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

# Plan een scrape om elke dag om 10 uur UTC uit te voeren
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))

Planning met natuurlijke taal

Gebruik natuurlijke taal om automatisch cron-expressies te genereren. Het systeem zet je tekst om in een geldige cron-expressie.
import requests
import json

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

# Plan met behulp van natuurlijke taal
payload = {
    "method": "POST",
    "endpoint": "v1/scrapes",
    "payload": {
        "url_to_scrape": "https://example.com",
        "formats": ["markdown"]
    },
    "text": "elke 3 minuten",
    "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))

Responsformaat

Wanneer je een schema maakt, ontvang je een schema-object met de volgende eigenschappen:
{
  "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"
}
Voor eenmalige schema’s bevat de respons execute_at in plaats van 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"
}

Schema’s opvragen

Haal alle schema’s voor je team op. Standaard worden verwijderde schema’s uitgefilterd. Gebruik de include_deleted query parameter om ze op te nemen.
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"Totaal aantal schema's: {result['count']}")
for schedule in result['schedules']:
    print(json.dumps(schedule, indent=2))

# Om verwijderde schema's op te nemen:
# response = requests.get(f"{API_URL}/schedules?include_deleted=true", headers=headers)

Een schema opvragen

Haal een enkel schema op via zijn 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))

Een schema verwijderen

Verwijder een schema via zijn ID. Dit stopt alle toekomstige uitvoeringen.
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))

Ondersteunde eindpunten

Olostep eindpunten (korte vorm)

Voor POST-verzoeken kun je korte vormen gebruiken voor Olostep-eindpunten. Het systeem voegt automatisch https://api.olostep.com/ toe voor deze:
  • v1/scrapes - Plan web scraping taken
  • v1/batches - Plan batchverwerkingstaken
  • v1/crawls - Plan website crawling operaties
  • v1/maps - Plan kaartgegevens extractie
  • v1/answers - Plan antwoordgeneratie

Volledige URL’s

Je kunt ook volledige URL’s opgeven voor je eindpunten. Dit is vereist voor externe API’s of webhooks:
import requests
import json
from datetime import datetime, timedelta

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

# Plan een oproep naar een externe 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))
Het payload veld accepteert elk JSON-object - je kunt het structureren zoals je nodig hebt voor je doeleindpunt.

Cron-expressieformaat

Cron-expressies gebruiken een formaat van 6 velden:
minuut uur dag maand dag-van-de-week jaar
Voorbeelden:
  • 0/3 * * * ? * - Elke 3 minuten
  • 0 10 * * ? * - Elke dag om 10:00 uur
  • 0 9 ? * MON * - Elke maandag om 9:00 uur
  • 0 0 1 * ? * - Eerste dag van elke maand om middernacht
Gebruik ? voor dag-van-de-maand of dag-van-de-week wanneer niet gespecificeerd.

Voorbeelden van natuurlijke taal

Je kunt natuurlijke taal gebruiken om schema’s te beschrijven. Het systeem zet ze automatisch om in cron-expressies:
  • “elke 3 minuten” → 0/3 * * * ? *
  • “elke dag om 10 uur” → 0 10 * * ? *
  • “elke maandag om 9 uur” → 0 9 ? * MON *
  • “elk uur” → 0 * * * ? *
  • “elke week op maandag” → 0 0 ? * MON *

Belangrijke opmerkingen

  • Eenmalige schema’s worden automatisch verwijderd na uitvoering
  • Terugkerende schema’s gaan door totdat ze handmatig worden verwijderd
  • Tijdzone moet een geldige IANA-tijdzone-identificator zijn (bijv. “UTC”, “America/New_York”, “Europe/London”)
  • De execute_at datum en tijd moet in de toekomst liggen
  • Natuurlijke taalconversie kan herhalingen vereisen; het systeem zal tot 3 keer proberen
  • Bij gebruik van natuurlijke taaltekst (text parameter), is de standaard tijdzone “UTC”
  • Schema’s voeren de API-aanroep uit met de opgegeven payload precies zoals gespecificeerd - je kunt elke JSON-structuur doorgeven die je nodig hebt
  • Voor POST-verzoeken worden korte Olostep-eindpunten (v1/scrapes, v1/batches, v1/crawls, v1/maps, v1/answers) automatisch voorvoegsel met https://api.olostep.com/
  • Voor andere eindpunten, geef de volledige URL op
  • De payload kan elke datastructuur bevatten - het wordt zoals het is verzonden naar je doeleindpunt
  • Het verwijderen van een al verwijderd schema zal een 400-fout opleveren

Prijsstelling

Schema’s zelf zijn gratis. Je betaalt alleen voor de API-aanroepen die worden uitgevoerd wanneer het schema wordt uitgevoerd. Bijvoorbeeld, als je een scrape plant, betaal je 1 credit per uitvoering (of meer bij gebruik van parsers of LLM-extractie).