Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.bytestack.com/llms.txt

Use this file to discover all available pages before exploring further.

Every query ByteStack runs produces a structured JSON result that is stored in your workspace’s Storage. You can download individual results manually from the dashboard, pull them programmatically via the REST API, sync them automatically to your own S3-compatible bucket, or receive a webhook notification the moment a result is ready — then fetch it on demand.

Download from the dashboard

The simplest way to get a result file is directly from the ByteStack dashboard.
  1. Open your workspace and click Storage in the top navigation.
  2. Each completed query appears as a file with a timestamped key, for example qry_01j9zt3pk2examp1e_2026-04-30T08-00-00Z.json.
  3. Click the file name to preview the result, then click Download JSON to save it to your machine.
Use this method for ad-hoc exports or when sharing a result with a stakeholder who does not have API access.

Export via REST API

Pull any result file programmatically using the GET /storage/{key} endpoint.
curl -X GET "https://api.bytestack.dev/v1/storage/qry_01j9zt3pk2examp1e" \
  -H "Authorization: Bearer $BITKIT_API_KEY" \
  --output result.json
Replace qry_01j9zt3pk2examp1e with the query_id returned when you created the query. The response body is the raw JSON result object.

Sync to S3-compatible storage

For continuous pipelines, configure ByteStack to write results directly to your own bucket after every job run.
  1. Open Settings → Storage in the dashboard.
  2. Enter your bucket details:
    • Endpoint — your S3-compatible endpoint URL (e.g., https://s3.us-east-1.amazonaws.com or a self-hosted endpoint).
    • Bucket name — the target bucket.
    • Access key ID and Secret access key — credentials with s3:PutObject permission.
  3. Click Save and test. ByteStack uploads a small verification file to confirm access.
Once configured, ByteStack writes each job result to your bucket automatically. Files are named using the pattern bytestack/{query_id}/{timestamp}.json, making them easy to partition and query in tools like Athena or BigQuery.

Stream results with webhooks

Webhooks give your services instant notification when a job finishes, without polling. Add a webhook_url to any job configuration:
{
  "prompt": "How many times was YourBrand mentioned on X this week?",
  "sources": ["x"],
  "schedule": "0 8 * * *",
  "webhook_url": "https://your-service.example.com/hooks/bytestack"
}
After each run, ByteStack sends a POST request to your URL with a payload like this:
{
  "event": "job.completed",
  "query_id": "qry_01j9zt3pk2examp1e",
  "status": "completed",
  "completed_at": "2026-04-30T08:01:14Z",
  "result_url": "https://api.bytestack.dev/v1/storage/qry_01j9zt3pk2examp1e"
}
Your service can use result_url to fetch the full result immediately, then forward a summary to Slack, write it to a database, or trigger downstream processing.

Download in multiple languages

curl -X GET "https://api.bytestack.dev/v1/storage/qry_01j9zt3pk2examp1e" \
  -H "Authorization: Bearer $BITKIT_API_KEY" \
  --output result.json
Raw scrape logs are retained for 90 days and then deleted automatically. Structured query outputs — the JSON results you see in Storage — are retained indefinitely until you delete them manually or configure a retention policy in Settings → Storage.