API Docs
POST https://api.windfalldata.com/sandbox/v1

Sandbox

A non-billed environment that mirrors the production endpoint and returns deterministic responses from a fixed set of fictitious personas. Use it to build and test client integrations without consuming credits or hitting real customer data.

Why use the sandbox?

No credit consumption

Sandbox calls are not billed and do not draw from your token quota.

Deterministic responses

The same request always returns the same response, ideal for unit and integration tests.

Identical contract

Same matching pipeline, request body, and response format as production. Only the data source differs.

Endpoint & authentication

Base URL https://api.windfalldata.com/sandbox/v1
Method POST
Content-Type application/json
Auth header X-WF-Auth-Token
Token format sandbox_YOUR_KEY
Billing Non-billed (free)
Rate limit 5 requests / second

Sandbox tokens are issued by Windfall and always begin with sandbox_. Contact your account representative to provision one; see Authentication for details. Production tokens do not work on the sandbox endpoint and sandbox tokens do not work on production — either combination returns 403.

Example: cURL
curl -X POST https://api.windfalldata.com/sandbox/v1 \
  -H "Content-Type: application/json" \
  -H "X-WF-Auth-Token: sandbox_YOUR_KEY" \
  -d '{
    "first_name": "Jane",
    "last_name": "Doe",
    "addresses": [{"address": "100 Sandbox Ln", "zipcode": "80201"}]
  }'

The sandbox accepts the same request body and returns the same response shape as the production endpoint. See the API Reference for the full schema.

Match scenarios

The sandbox supports four match outcomes. Send a request that includes a valid matching combination from one of the personas — see what constitutes a match for the field requirements — to deterministically trigger that scenario.

A few response rules apply across all scenarios:

  • If the request includes an id, it is echoed back on the response.
  • The household object is omitted when household_matched is false; the career object is omitted when career_matched is false.

Career matching requires Career Intelligence (CI) on your account

The sandbox honors your account's configuration just like production. If your account does not have CI matching enabled, you will see:

  • "Both" personas (Amanda Taylor, Daniel Garcia, Michelle Robinson, James Thompson, Catherine White) return household_matched: true but career_matched: false.
  • "Career-only" personas (David Wilson, Jennifer Davis, Thomas Anderson, Patricia Martinez, Christopher Lee) return both flags false — they appear as no match.

Contact your Windfall account representative to enable CI matching for sandbox or production use.

The examples below send every available identifier for clarity. If you copy just one field from an example, your request may stop matching — different combinations have different field requirements. See what constitutes a match for the supported combinations.

1

Household + career match

Returns full enrichment: wealth, household data, and career/employment data. Personas: Amanda Taylor, Daniel Garcia, Michelle Robinson, James Thompson, Catherine White.

Request: Amanda Taylor (entry-level profile)
curl -X POST https://api.windfalldata.com/sandbox/v1 \
  -H "Content-Type: application/json" \
  -H "X-WF-Auth-Token: sandbox_YOUR_KEY" \
  -d '{
    "first_name": "Amanda",
    "last_name": "Taylor",
    "addresses": [{"address": "100 Demo St", "zipcode": "30301"}],
    "emails": ["amanda.taylor@sandbox.windfall.com"],
    "phones": ["5553000001"]
  }'
Response: Amanda Taylor (entry-level profile, abridged)
{
  "household_matched": true,
  "career_matched": true,
  "household": { "net_worth": 1000000, /* ... */ },
  "career": { "job_title": "Software Engineer", /* ... */ }
}
2

Household match only

Returns wealth and household data. The career field is absent. Personas: Jane Doe, Robert Smith, Sarah Johnson, Michael Williams, Elizabeth Brown.

Response: Jane Doe (entry-level profile, abridged)
{
  "household_matched": true,
  "career_matched": false,
  "household": { "net_worth": 1000000, /* ... */ }
}
3

Career match only

Returns career/employment data only. The household field is absent. Personas: David Wilson, Jennifer Davis, Thomas Anderson, Patricia Martinez, Christopher Lee.

Response: David Wilson (entry-level profile, abridged)
{
  "household_matched": false,
  "career_matched": true,
  "career": { "job_title": "Software Engineer", /* ... */ }
}
4

No match

Any request that does not match a persona returns no data. Both flags are false and the enrichment objects are absent.

Response
{
  "household_matched": false,
  "career_matched": false
}

Persona reference

The sandbox includes 15 personas across 3 match categories — 5 example profiles in each. The profiles range from modest to ultra-high net worth (and individual contributor to CEO for career personas), giving you a representative sample of the response shapes production might return.

What constitutes a match

The sandbox uses the same matchers as production. A request matches a persona when one of Windfall's matchers can resolve against the fields in the request. Below are examples of some of those matchers:

Combination Required fields
Emailemails
Full addressaddresses[].address (number + street) AND addresses[].zipcode
Phone + namephones AND first_name AND last_name

Sending only first_name / last_name will not match. Sending only a partial address (e.g., street name without the zipcode) will not match. Adding extra non-matching fields is fine — once any combination above resolves, the match succeeds.

Household + career — full enrichment

Persona Address Email Phone Net worth Job Copy
Amanda Taylor100 Demo St, 30301amanda.taylor@sandbox.windfall.com5553000001$1MSoftware Engineer @ Sandbox Tech Inc
Daniel Garcia200 Demo St, 85001daniel.garcia@sandbox.windfall.com5553000002$5MVP of Marketing @ Sandbox Media Group
Michelle Robinson300 Demo St, 55401michelle.robinson@sandbox.windfall.com5553000003$10MCFO @ Sandbox Financial Services
James Thompson400 Demo St, 28201james.thompson@sandbox.windfall.com5553000004$25MDirector of Operations @ Sandbox Logistics LLC
Catherine White500 Demo St, 92101catherine.white@sandbox.windfall.com5553000005$50MCEO @ Sandbox Holdings Corp

Career enrichment is only returned for accounts with Career Intelligence (CI) enabled.

Household only — wealth & household enrichment

Persona Address Email Phone Net worth Copy
Jane Doe100 Sandbox Ln, 80201jane.doe@sandbox.windfall.com5551000001$1M
Robert Smith200 Sandbox Ln, 33101robert.smith@sandbox.windfall.com5551000002$5M
Sarah Johnson300 Sandbox Ln, 02101sarah.johnson@sandbox.windfall.com5551000003$10M
Michael Williams400 Sandbox Ln, 97201michael.williams@sandbox.windfall.com5551000004$25M
Elizabeth Brown500 Sandbox Ln, 37201elizabeth.brown@sandbox.windfall.com5551000005$50M

Career only — career & employment enrichment

Persona Address Email Phone Job Copy
David Wilson100 Test Ave, 94105david.wilson@sandbox.windfall.com5552000001Software Engineer @ Sandbox Tech Inc
Jennifer Davis200 Test Ave, 10001jennifer.davis@sandbox.windfall.com5552000002VP of Marketing @ Sandbox Media Group
Thomas Anderson300 Test Ave, 60601thomas.anderson@sandbox.windfall.com5552000003CFO @ Sandbox Financial Services
Patricia Martinez400 Test Ave, 78701patricia.martinez@sandbox.windfall.com5552000004Director of Operations @ Sandbox Logistics LLC
Christopher Lee500 Test Ave, 98101christopher.lee@sandbox.windfall.com5552000005CEO @ Sandbox Holdings Corp

Career enrichment is only returned for accounts with Career Intelligence (CI) enabled. Without CI, requests for these personas resolve as no match.

Every field that can appear in a production response is populated by at least one persona, so you can validate parsers and downstream logic against realistic data.

Error simulation

Test your error-handling code paths without needing to trigger the underlying conditions. Add the X-Windfall-Sandbox-Error header to any sandbox request and the API returns the requested status with body {"message": "..."}.

Header value HTTP status Meaning
400400 Bad RequestSimulated invalid input
429429 Too Many RequestsSimulated rate limit exceeded
500500 Internal Server ErrorSimulated unhandled error
503503 Service UnavailableSimulated downstream service unavailable
Example: simulate a 429
curl -X POST https://api.windfalldata.com/sandbox/v1 \
  -H "Content-Type: application/json" \
  -H "X-WF-Auth-Token: sandbox_YOUR_KEY" \
  -H "X-Windfall-Sandbox-Error: 429" \
  -d '{"first_name": "Jane", "last_name": "Doe"}'

# Response: HTTP 429
# {"message": "Rate limit exceeded"}

Naturally-occurring errors

Beyond the simulator, the sandbox returns these errors under the same real conditions production does:

400 Malformed request body, headers, or more than 10 emails / phones / addresses.
401 Missing or invalid X-WF-Auth-Token.
403 Sandbox token used on production endpoint, or production token used on sandbox.
429 Rate limit exceeded (5 req/sec).
500 Unhandled server error. Rare in the sandbox — use the simulator to test this code path.
503 Downstream service unavailable. Rare in the sandbox — use the simulator to test this code path.

Error responses always have shape {"message": "..."}.