Timeline: Both APIs are currently available. Include the parallel-beta: "findall-2025-09-15" header to use V1 API. Without this header, requests default to V0 API.
Match conditions return both value and is_matched boolean
Increased match_limit from 200 to 1,000
Better Performance: Improved latency and match quality across all stages
Breaking Changes: V1 is not backward compatible. V0 runs cannot be accessed via V1 endpoints. Parameter names, response schemas, and pricing have changed.
This example shows the complete workflow migration, including enrichments:
Copy
Ask AI
import requestsimport timeAPI_KEY = "your_api_key"BASE_URL = "https://api.parallel.ai"# Step 1: Ingest queryingest_response = requests.post( f"{BASE_URL}/v1beta/findall/ingest", headers={"x-api-key": API_KEY}, json={"query": "Find AI companies that raised Series A in 2024 and get CEO names"})findall_spec = ingest_response.json()# Step 2: Create run (constraints + enrichments together)run_response = requests.post( f"{BASE_URL}/v1beta/findall/runs", headers={"x-api-key": API_KEY}, json={ "findall_spec": findall_spec, "processor": "base", "result_limit": 50 })findall_id = run_response.json()["findall_id"]# Step 3: Poll until both flags are falsewhile True: poll_response = requests.get( f"{BASE_URL}/v1beta/findall/runs/{findall_id}", headers={"x-api-key": API_KEY} ) result = poll_response.json() if not result["is_active"] and not result["are_enrichments_active"]: break time.sleep(15)# Step 4: Access results from poll responsefor entity in result["results"]: print(f"{entity['name']}: Score {entity['score']}") # Loop through arrays to find values for filter_result in entity["filter_results"]: print(f" {filter_result['key']}: {filter_result['value']}") for enrichment in entity["enrichment_results"]: print(f" {enrichment['key']}: {enrichment['value']}")