Skip to main content
When using async operations like /extract/async, /extract/batch, /agent/async, or /crawl, you have three flexible options for receiving your results. Choose the method that best fits your infrastructure and workflow.

Polling

Pull results on-demand using task IDs

Callbacks

Receive push notifications when tasks complete

Cloud Delivery

Automatic delivery to your S3 or GCS bucket

Option 1: Polling (Pull)

The simplest approach - submit your async request, receive a task ID, and poll for results when ready.
1

Submit async request

Send a request to the async endpoint. You’ll receive a task or crawl ID to track your request.
2

Check status

Poll the status endpoint to monitor progress.
3

Retrieve results

Once complete, fetch the full results.

Polling endpoints reference

To list all tasks across your account, use GET /v1/tasks (supports cursor and limit for pagination). To list all batches, use GET /v1/batches.

Option 2: Webhooks (Push)

Get notified automatically when your tasks complete. Perfect for event-driven architectures.
1

Submit request with callback URL

Include callback_url (or callback object for crawl) in your async request.
2

Receive webhook notification

Nimble sends a POST to your callback URL when complete:

Webhook configuration options


Option 3: Cloud Delivery (Async API)

Applies to async API requests - /extract/async, /extract/batch, /agent/async, /crawl. For connecting a Job to your storage, see Job Connections.
Automatically deliver results directly to your cloud storage bucket.

Amazon S3

Deliver to any S3 bucket in your AWS account

Google Cloud Storage

Deliver to any GCS bucket in your GCP project
1

Configure bucket permissions (one-time)

Grant Nimble’s service account write access to your bucket.
Nimble Service User ARN:
Add this bucket policy:
Replace YOUR_BUCKET_NAME with your actual bucket name.
For KMS-encrypted buckets, add this to your KMS key policy:
2

Submit request with storage config

Include storage_type and storage_url in your request.

Cloud delivery parameters

3

Results delivered automatically

When complete, results are written to your bucket as {task_id}.json (or .json.gz if compressed).

Comparison

Combining methods

You can combine delivery methods for redundancy:

Best Practices

  • Check status first - Use /tasks/{id} before fetching full results - Use reasonable intervals - Poll every 2-5 seconds, not continuously - Handle rate limits - Implement retry logic for 429 responses - Set timeouts - Most tasks complete within seconds to minutes
  • Use HTTPS - Always use secure endpoints - Verify authenticity - Use custom headers for authentication - Respond quickly - Return 200 OK immediately, process async - Handle retries - Nimble retries failed deliveries
  • Use prefixes - Organize by date, project, or type - Enable compression - Use storage_compress: true for large files - Set lifecycle policies - Auto-delete old files to manage costs - Use custom names - storage_object_name for meaningful filenames

Next Steps

Async Extract

Learn about async extraction options

Crawl API

Deep website crawling with async delivery

Agent Gallery

Browse available search agents

Rate Limits

Understand API rate limit