Naar hoofdinhoud gaan
Via de Olostep /v1/files endpoint kun je JSON-bestanden uploaden die als context in je API-verzoeken kunnen worden gebruikt. Dit stelt je in staat om gestructureerde data te leveren om je scrapes, antwoorden en andere operaties te verbeteren.
  • Upload JSON-bestanden tot 200MB
  • Bestanden worden automatisch gevalideerd op juiste JSON-indeling
  • Gebruik bestanden als context in scrapes, antwoorden en andere endpoints
  • Bestanden verlopen na 30 dagen
  • Veilige uploadprocedure met vooraf ondertekende URL
Voor API-details zie de Files Endpoint API Reference.

Installatie

# pip install requests

import requests

Upload een bestand

Het uploadproces van een bestand bestaat uit twee stappen:
  1. Maak upload-URL aan: Vraag een vooraf ondertekende URL aan voor het uploaden van je bestand
  2. Voltooi upload: Upload je bestand naar de vooraf ondertekende URL en roep vervolgens de complete endpoint aan om te valideren en af te ronden

Stap 1: Maak upload-URL aan

Maak eerst een upload-URL aan door de bestandsnaam en optioneel het doel op te geven. De purpose parameter ondersteunt slechts twee waarden: "context" (standaard) of "batch".
import requests
import json

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

# Stap 1: Maak upload-URL aan
payload = {
    "filename": "my-data.json",
    "purpose": "context"  # Optioneel, standaard is "context". Ondersteunde waarden: "context" of "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))
# Reactie bevat: id, upload_url, expires_in
De reactie bevat een vooraf ondertekende upload_url die verloopt na 10 minuten:
{
  "id": "file_abc123xyz789",
  "object": "file.upload",
  "created": 1760329882,
  "upload_url": "https://olostep-files.s3.amazonaws.com/files/...",
  "expires_in": 600
}

Stap 2: Upload bestand en voltooi

Upload je JSON-bestand naar de vooraf ondertekende URL en roep vervolgens de complete endpoint aan om de upload te valideren en af te ronden.
import requests
import json

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

# Na het verkrijgen van upload_url van Stap 1
file_id = upload_data["id"]
upload_url = upload_data["upload_url"]

# Bereid je JSON-data voor
json_data = {
    "users": [
        {"name": "John Doe", "email": "john@example.com"},
        {"name": "Jane Smith", "email": "jane@example.com"}
    ]
}

# Stap 2a: Upload bestand naar vooraf ondertekende URL
upload_response = requests.put(
    upload_url,
    data=json.dumps(json_data),
    headers={"Content-Type": "application/json"}
)
upload_response.raise_for_status()

# Stap 2b: Voltooi de upload
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))
De complete endpoint valideert het JSON-bestand en retourneert bestandsmetadata:
{
  "id": "file_abc123xyz789",
  "object": "file",
  "created": 1760329882,
  "filename": "my-data.json",
  "bytes": 1024,
  "purpose": "context",
  "status": "completed"
}

Haal bestandsmetadata op via ID

Haal metadata op voor een bestand via zijn 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))

Haal bestandobject op via ID

Verkrijg een vooraf ondertekende URL om de JSON-inhoud van een voltooid bestand te downloaden. Specificeer optioneel de vervaltijd voor de download-URL met de expires_in queryparameter (standaard is 600 seconden / 10 minuten).
file_id = "file_abc123xyz789"
# Verkrijg download-URL (standaard vervaltijd: 600 seconden)
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"]

# Download de bestandsinhoud met de vooraf ondertekende URL
file_response = requests.get(download_url)
file_content = file_response.json()
print(json.dumps(file_content, indent=2))

# Voorbeeld met aangepaste vervaltijd (3600 seconden = 1 uur)
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"Download-URL verloopt over: {download_info['expires_in']} seconden")
De reactie bevat een vooraf ondertekende download_url die verloopt na de opgegeven tijd:
{
  "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
}

Lijst bestanden

Lijst alle voltooide bestanden voor je team. Filter optioneel op doel (ondersteunde waarden: "context" of "batch").
# Lijst alle bestanden
response = requests.get(
    f"{API_URL}/files",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
files = response.json()
print(json.dumps(files, indent=2))

# Lijst bestanden gefilterd op doel
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))
De reactie bevat een lijst van bestanden:
{
  "object": "list",
  "data": [
    {
      "id": "file_abc123xyz789",
      "object": "file",
      "created": 1760329882,
      "filename": "my-data.json",
      "bytes": 1024,
      "purpose": "context",
      "status": "completed"
    }
  ]
}

Verwijder een bestand

Verwijder een bestand en de bijbehorende data uit de opslag.
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))

Voltooi upload voorbeeld (context doel)

Hier is een compleet voorbeeld dat een JSON-bestand uploadt met purpose="context":
import requests
import json

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

# Stap 1: Maak upload-URL aan
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"]

# Stap 2: Bereid en upload JSON-data
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()

# Stap 3: Voltooi de upload
complete_response = requests.post(
    f"{API_URL}/files/{file_id}/complete",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
file_info = complete_response.json()

print(f"Bestand succesvol geüpload: {file_info['id']}")
print(f"Bestandsgrootte: {file_info['bytes']} bytes")

Upload batch bestand voorbeeld

Hier is een voorbeeld dat een JSON-bestand uploadt met purpose="batch" dat geldige batchgegevens bevat die kunnen worden gebruikt met de /v1/batches endpoint:
import requests
import json

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

# Stap 1: Maak upload-URL aan met purpose="batch"
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"]

# Stap 2: Bereid batch JSON-data voor (geldige indeling voor /v1/batches endpoint)
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()

# Stap 3: Voltooi de upload
complete_response = requests.post(
    f"{API_URL}/files/{file_id}/complete",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
file_info = complete_response.json()

print(f"Batch bestand succesvol geüpload: {file_info['id']}")
print(f"Bestandsgrootte: {file_info['bytes']} bytes")
print(f"Doel: {file_info['purpose']}")
Het geüploade batchbestand bevat een geldige JSON-structuur die overeenkomt met het /v1/batches endpoint formaat:
  • items: Array van objecten met custom_id en url velden
  • parser: Optionele parserconfiguratie
  • country: Optionele landcode
Dit bestand kan worden gebruikt als invoer voor batchverwerkingsoperaties.

Bestandsvereisten

  • Bestandsformaat: Alleen JSON-bestanden worden ondersteund (.json extensie vereist)
  • Bestandsgrootte: Maximaal 200MB per bestand
  • Verloop: Bestanden verlopen na 30 dagen
  • Upload-URL: Vooraf ondertekende URL’s verlopen na 10 minuten
  • Purpose parameter: Ondersteunt alleen "context" of "batch" waarden (standaard is "context")

Prijzen

Bestandsuploads zijn gratis. Bestanden worden veilig opgeslagen en verlopen automatisch na 30 dagen.