Capability · ETL & search
Ingest, index and search, without a vector DB.
Turn URLs, HTML and text into a searchable vector store, and run live web and deep-research search — a stateless white-label of Twin Browser, billed straight through with no markup.
POST /v1/etl · /v1/etl/query · /v1/search
What you get
Built for regulated workloads
ETL and search are a curated, stateless proxy over Twin Browser’s browser-execution API. POST sources to /v1/etl and the upstream extracts, transforms, chunks, embeds and stores them; query them back with /v1/etl/query — no vector database to run. /v1/search adds live web search, and depth:"deep" runs an async research pass you poll at /v1/jobs/{token}. phi-cloud holds no state: the vector store, collections and jobs all live upstream, isolated per customer and billed exactly at the upstream’s rate.
Semantic query
Web + deep research
Per-customer namespace
Pass-through pricing
General traffic only
Availability & pricing
Where it runs, what it costs
Every route is region-resident and the PHI gate is enforced per call. Prices include the flat +10% gateway margin and mirror the live /v1/pricing rate card.
| Region | Provider | Model | Tier | Price |
|---|---|---|---|---|
| All | Twin Browser | ETL ingest · /v1/etl | General | Pass-through |
| All | Twin Browser | ETL query · /v1/etl/query | General | Pass-through |
| All | Twin Browser | Web search · /v1/search | General | Pass-through |
| All | Twin Browser | Deep research · /v1/search (async) | General | Pass-through |
| Any | — | ETL / search (PHI) | No route | phi_blocked |
Billed pass-through — you pay exactly the upstream’s reported credits, converted at 1 USD = 1000 credits with no phi-cloud markup. General traffic only, and paid keys only (not the free test tier).
Try it
A real call, end to end
Ingest a few sources, then query them semantically — no vector DB to run. Everything is scoped to your own collection.
# 1 — ingest sources into a collection
curl https://phi-cloud.com/api/v1/etl \
-H "Authorization: Bearer $PHI_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "sources": ["https://example.com/handbook"], "collection": "handbook" }'
# 2 — semantic query over that collection
curl https://phi-cloud.com/api/v1/etl/query \
-H "Authorization: Bearer $PHI_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "query": "what is the refund window?", "collection": "handbook" }'x-phi-routed: etl-query/EU/non_phi
x-phi-upstream: twin-browser
x-phi-cost-micro: 4000
{ "matches": [{ "text": "Refunds within 30 days...", "score": 0.82 }],
"collection": "handbook" }Statelessness & isolation
- phi-cloud is a stateless proxy — the vector store, collections and job state all live in Twin Browser, not here. Nothing about your content is persisted by the gateway.
- Every customer shares one upstream tenant, isolated by a per-customer collection namespace derived from your API key (never the request body), so a query can only reach your own content.
- Async deep-search jobs return an HMAC token bound to your customer id; /v1/jobs/{token} only un-wraps it for the same customer, so job ids can’t be guessed across tenants.
- General traffic only: Twin Browser is not PHI-eligible, so X-PHI:true returns phi_blocked. Paid keys only — the free test tier is off.
- · Deep search is asynchronous — /v1/search with depth:"deep" returns a job token to poll at /v1/jobs/{token}; shallow search is synchronous.
- · The captcha-solving and agentic-automation surface (run, live, skills, monitors) is intentionally not exposed — off-posture for a compliance product.
FAQ
Common questions
Ready when you are
Put etl & search in production — without giving up your data.
Spin up a key in minutes. The residency and PHI posture above arrives unchanged.
Free to test · Prepaid credits, no subscription · No data retained