Zum Hauptinhalt springen
Über den Olostep /v1/files Endpunkt kannst du JSON-Dateien hochladen, die als Kontext in deinen API-Anfragen verwendet werden können. Dies ermöglicht es dir, strukturierte Daten bereitzustellen, um deine Scrapes, Antworten und andere Operationen zu verbessern.
  • Lade JSON-Dateien bis zu 200MB hoch
  • Dateien werden automatisch auf korrektes JSON-Format validiert
  • Verwende Dateien als Kontext in Scrapes, Antworten und anderen Endpunkten
  • Dateien verfallen nach 30 Tagen
  • Sicherer Upload-Prozess mit vorab signierten URLs
Für API-Details siehe die Files Endpoint API Reference.

Installation

# pip install requests

import requests

Eine Datei hochladen

Der Datei-Upload-Prozess besteht aus zwei Schritten:
  1. Upload-URL erstellen: Fordere eine vorab signierte URL zum Hochladen deiner Datei an
  2. Upload abschließen: Lade deine Datei zur vorab signierten URL hoch und rufe dann den Complete-Endpunkt auf, um zu validieren und abzuschließen

Schritt 1: Upload-URL erstellen

Erstelle zuerst eine Upload-URL, indem du den Dateinamen und optional den Zweck angibst. Der purpose Parameter unterstützt nur zwei Werte: "context" (Standard) oder "batch".
import requests
import json

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

# Schritt 1: Upload-URL erstellen
payload = {
    "filename": "my-data.json",
    "purpose": "context"  # Optional, Standard ist "context". Unterstützte Werte: "context" oder "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))
# Antwort enthält: id, upload_url, expires_in
Die Antwort enthält eine vorab signierte upload_url, die in 10 Minuten abläuft:
{
  "id": "file_abc123xyz789",
  "object": "file.upload",
  "created": 1760329882,
  "upload_url": "https://olostep-files.s3.amazonaws.com/files/...",
  "expires_in": 600
}

Schritt 2: Datei hochladen und abschließen

Lade deine JSON-Datei zur vorab signierten URL hoch und rufe dann den Complete-Endpunkt auf, um den Upload zu validieren und abzuschließen.
import requests
import json

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

# Nachdem du upload_url aus Schritt 1 erhalten hast
file_id = upload_data["id"]
upload_url = upload_data["upload_url"]

# Bereite deine JSON-Daten vor
json_data = {
    "users": [
        {"name": "John Doe", "email": "john@example.com"},
        {"name": "Jane Smith", "email": "jane@example.com"}
    ]
}

# Schritt 2a: Datei zur vorab signierten URL hochladen
upload_response = requests.put(
    upload_url,
    data=json.dumps(json_data),
    headers={"Content-Type": "application/json"}
)
upload_response.raise_for_status()

# Schritt 2b: Upload abschließen
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))
Der Complete-Endpunkt validiert die JSON-Datei und gibt die Dateimetadaten zurück:
{
  "id": "file_abc123xyz789",
  "object": "file",
  "created": 1760329882,
  "filename": "my-data.json",
  "bytes": 1024,
  "purpose": "context",
  "status": "completed"
}

Dateimetadaten nach ID abrufen

Rufe Metadaten für eine Datei anhand ihrer ID ab.
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))

Dateiobjekt nach ID abrufen

Erhalte eine vorab signierte URL, um den JSON-Inhalt einer abgeschlossenen Datei herunterzuladen. Optional kannst du die Ablaufzeit für die Download-URL mit dem expires_in Query-Parameter angeben (Standard sind 600 Sekunden / 10 Minuten).
file_id = "file_abc123xyz789"
# Download-URL erhalten (Standardablauf: 600 Sekunden)
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"]

# Lade den Dateiinhalte über die vorab signierte URL herunter
file_response = requests.get(download_url)
file_content = file_response.json()
print(json.dumps(file_content, indent=2))

# Beispiel mit benutzerdefiniertem Ablauf (3600 Sekunden = 1 Stunde)
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 läuft ab in: {download_info['expires_in']} Sekunden")
Die Antwort enthält eine vorab signierte download_url, die nach der angegebenen Zeit abläuft:
{
  "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
}

Dateien auflisten

Liste alle abgeschlossenen Dateien für dein Team auf. Optional kannst du nach Zweck filtern (unterstützte Werte: "context" oder "batch").
# Alle Dateien auflisten
response = requests.get(
    f"{API_URL}/files",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
files = response.json()
print(json.dumps(files, indent=2))

# Dateien nach Zweck gefiltert auflisten
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))
Die Antwort enthält eine Liste von Dateien:
{
  "object": "list",
  "data": [
    {
      "id": "file_abc123xyz789",
      "object": "file",
      "created": 1760329882,
      "filename": "my-data.json",
      "bytes": 1024,
      "purpose": "context",
      "status": "completed"
    }
  ]
}

Eine Datei löschen

Lösche eine Datei und ihre zugehörigen Daten aus dem Speicher.
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))

Komplettes Upload-Beispiel (Zweck: Kontext)

Hier ist ein vollständiges Beispiel, das eine JSON-Datei mit purpose="context" hochlädt:
import requests
import json

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

# Schritt 1: Upload-URL erstellen
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"]

# Schritt 2: JSON-Daten vorbereiten und hochladen
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()

# Schritt 3: Upload abschließen
complete_response = requests.post(
    f"{API_URL}/files/{file_id}/complete",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
file_info = complete_response.json()

print(f"Datei erfolgreich hochgeladen: {file_info['id']}")
print(f"Dateigröße: {file_info['bytes']} Bytes")

Beispiel für den Upload einer Batch-Datei

Hier ist ein Beispiel, das eine JSON-Datei mit purpose="batch" hochlädt, die gültige Batch-Daten enthält, die mit dem /v1/batches Endpunkt verwendet werden können:
import requests
import json

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

# Schritt 1: Upload-URL mit purpose="batch" erstellen
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"]

# Schritt 2: Batch-JSON-Daten vorbereiten (gültiges Format für /v1/batches Endpunkt)
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()

# Schritt 3: Upload abschließen
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-Datei erfolgreich hochgeladen: {file_info['id']}")
print(f"Dateigröße: {file_info['bytes']} Bytes")
print(f"Zweck: {file_info['purpose']}")
Die hochgeladene Batch-Datei enthält eine gültige JSON-Struktur, die dem /v1/batches Endpunkt-Format entspricht:
  • items: Array von Objekten mit custom_id und url Feldern
  • parser: Optionale Parser-Konfiguration
  • country: Optionaler Ländercode
Diese Datei kann als Eingabe für Batch-Verarbeitungsoperationen verwendet werden.

Dateianforderungen

  • Dateiformat: Nur JSON-Dateien werden unterstützt (.json Erweiterung erforderlich)
  • Dateigröße: Maximal 200MB pro Datei
  • Ablauf: Dateien verfallen nach 30 Tagen
  • Upload-URL: Vorab signierte URLs verfallen nach 10 Minuten
  • Purpose-Parameter: Unterstützt nur "context" oder "batch" Werte (Standard ist "context")

Preisgestaltung

Datei-Uploads sind kostenlos. Dateien werden sicher gespeichert und verfallen automatisch nach 30 Tagen.