Decide
Render the governed Decision without requiring quantitative fields or exposing model-provider internals.
Wolf You Feed
Give your agent a Decision engine. Submit a consequential choice as an asynchronous job, poll for a governed Decision, and get US-hosted inference the whole way through.
Submit one consequential choice and receive one owner-scoped, auditable result. WYF handles admission, model orchestration, quantitative evidence, cost settlement, and graceful degradation behind one asynchronous contract.
Render the governed Decision without requiring quantitative fields or exposing model-provider internals.
Run supported, inspectable calculations before synthesis so the council can use fixed evidence.
Test a completed Decision against the matching supported calculation without rewriting the original result.
Authenticate with your Wolf You Feed Agent API key, the wyf_pk_… credential issued under
Settings → API Access after approval.
Do not send keys issued by any third-party model or infrastructure provider. You are accessing the WYF decision system, not an individual model. WYF manages the complete orchestration for your Decision Opportunity. This API accepts only a WYF-issued Agent key; no third-party provider keys are required.
Send your API key in exactly one header. Either header works; sending both returns
400.
X-API-Key: wyf_pk_REDACTED
or
Authorization: Bearer wyf_pk_REDACTED
NOTE: One API request to WYF can require substantially more inference than a single model call. Keep Agent keys out of source control, client apps, and public repos. You can revoke a key at any time from the same Settings page.
Every job submission needs a unique Idempotency-Key. Retrying the same body with the same key is safe and never bills twice.
POST /partner/v1/jobs
X-API-Key: wyf_pk_REDACTED
Idempotency-Key: 6f7e5a6c-1b32-42b8-ae53-0ce2ccb3916c
Content-Type: application/json
{
"query": "Our founder has six months of runway. Should we hire a senior seller now or preserve cash until two design partners renew?",
"workflow_mode": "standard",
"rationale": false
}
Accepted submissions return 202:
{
"id": "8f14e45f-ceea-467a-9a3f-1b2c7d9e04aa",
"status": "queued",
"poll_after_seconds": 10,
"workflow_mode": "standard",
"rationale": false,
"created_at": "2026-08-08T14:02:11Z",
"updated_at": "2026-08-08T14:02:11Z",
"completed_at": null,
"error": null,
"cost_usd": 0.0,
"result": null
}
We never echo your query back. Job responses carry no prompt text. You can check the status of your job by polling the API with the job ID.
GET /partner/v1/jobs/{job_id}
X-API-Key: wyf_pk_REDACTED
Wait at least 10 seconds between polls. Non-terminal responses include
poll_after_seconds: 10 and Retry-After: 10.
queued and running are non-terminal.
succeeded, failed, and
dead_letter are terminal; stop polling when you see one.
{
"id": "8f14e45f-ceea-467a-9a3f-1b2c7d9e04aa",
"status": "succeeded",
"poll_after_seconds": null,
"workflow_mode": "standard",
"rationale": false,
"created_at": "2026-08-08T14:02:11Z",
"updated_at": "2026-08-08T14:03:47Z",
"completed_at": "2026-08-08T14:03:47Z",
"error": null,
"cost_usd": 0.42,
"result": {
"decision": "Hold the hire until the first renewal closes, and ...",
"council_status": "full"
}
}
| Field | Type | Notes |
|---|---|---|
query |
string, required | 1 to 8,000 characters. The Decision Opportunity. |
workflow_mode |
string |
standard (default) or tactical.
tactical requires a grant on your key.
|
rationale |
boolean |
Default false. true adds
result.rationale_text and requires the
rationale:read scope.
|
resolution_mode |
string |
Default decide. precompute
runs inspectable math before synthesis.
validate appends the matching
calculation after the governed Decision. Both
require refinement:read.
|
Idempotency-Key is required,
may contain at most 128 characters, and should normally be a UUID.
403 before anything is queued or billed.
Quantitative refinement does not turn WYF into a calculator that replaces judgment. WYF still returns the governed Decision. A calculation supplies inspectable evidence: what assumptions were used, what the numbers imply, what remains uncertain, and what would change the result.
| Mode | Use it when | Current behavior |
|---|---|---|
decide |
You need WYF's normal first-response Decision contract. | No quantitative fields are required or returned. |
precompute |
You want inspectable math before synthesis: a Family Mode Decision about money, a Tactical Mode Decision about consumable resources, or a supported typed calculation payload. | The matching calculation runs before synthesis. WYF treats the result as fixed evidence. Constitutional constraints retain authority. |
validate |
You want a supported calculation tested after the Decision. | WYF can use the matching owner snapshot or the same typed calculation supplied with the request. The governed Decision is unchanged. |
We partner to accelerate Bayesian search, finite-horizon planning, and system-of-systems composition for sponsored programs. The public calculation catalog is Decision Science. Request shapes for Precompute live in the interactive API reference.
If a typed Precompute payload is missing a required field, WYF
returns 422 with
detail.code = "quantitative_inputs_incomplete" and a
bounded input_requirements list. No Decision work is
billed. Complete the listed fields and resubmit.
| Field | Notes |
|---|---|
id |
UUID for the job. Use it to poll. |
status |
queued, running,
succeeded, failed, or
dead_letter.
|
poll_after_seconds |
10 while work is queued or running; otherwise
null. Non-terminal responses also send
Retry-After: 10.
|
result.decision |
The governed Decision. Present once
status is succeeded.
|
result.council_status |
full when the whole model council weighed in; degraded when part of it was unavailable. We never degrade silently.
|
result.rationale_text |
Present only when you requested
rationale: true and your key allows it.
|
result.quantitative_refinement |
Present only for an entitled
resolution_mode: "validate" or
precompute request.
The original result.decision remains unchanged.
|
result.quantitative_refinement.summary |
Plain-language statement of what the calculation found. |
result.quantitative_refinement.key_findings |
Decision-relevant computed facts. The complete typed
artifact remains available for audit.
|
cost_usd |
Settled cost, drawn from your account balance. |
error |
null, or the fixed string
job_failed. Intentionally opaque: it carries no internal detail.
|
created_at, updated_at, completed_at |
UTC, YYYY-MM-DDTHH:MM:SSZ. |
| Status | Meaning | What to do |
|---|---|---|
400 |
Both Authorization and X-API-Key were sent |
Send exactly one. |
401 |
Missing, invalid, or revoked key | Check the key, or reissue it in Settings. |
402 |
Out of credits, or credits not enabled for the account | Request credits in Settings → API Access. |
403 |
Key lacks a scope or mode grant, or the request came from outside the US | Do not retry unchanged. |
404 |
Job not found, or issued to a different key | Job reads are scoped to the issuing key. |
409 |
Idempotency-Key reused with a different body |
Use a new key for a new request. |
422 |
Schema validation failed, or the job was not admitted | Branch on the body; see below. |
429 |
Rate limit, concurrency limit, or daily spend cap | Back off, then retry. |
503 |
API disabled, or Admission temporarily unavailable | Retry in a few seconds. |
Two different things return 422.
{"detail": {"code": "job_not_admitted"}}
Branch on job_not_admitted rather than parsing prose.
429.wyf_pk_… key. The form does not mint a JWT or a key. Further submissions while a request is pending are ignored.Every job passes Semantic Admission before it is queued. Admission asks one question: is the primary intent a genuine Decision Opportunity, meaning an identified person or team choosing what to do next when the outcome matters?
A strong Decision Opportunity ideally names the actor, the stakes, the constraints, and at least two potentially actionable options from which a reasonable person could choose, each with consequences attached:
Be specific. Be descriptive. Be verbose. Include details relevant to the choice: names or aliases of the stakeholders, dollar amounts, timelines, calories burned, reps done, etc.
422 with
job_not_admitted. No credit is reserved.
503
and creates no job rather than guessing. Retry after a short delay.
Every registered user who requests introductory Agent API access receives $10 in introductory credits. Add more from Settings → Usage (same Stripe pack as the website) or request an operator grant from Settings → API Access.
What counts as a Decision? A new job (a new idempotency key) is one Decision Session. That session is one Decision, regardless of how many models ran and whether you chose Precompute or Validate. A follow-up job is another Decision. Wolf You Feed is for decisions, not casual chatting.
Agent API traffic is governed by the following controls: