Wolf You Feed

Agent API

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.


API keys are issued to registered users after login. If you need one, create an account. General service vocabulary lives in Help after you sign in. The public calculation catalog is Decision Science. Routes are served under /partner/v1; “"Agent API"” and “"Partner API"” name the same surface.

A governed Decision layer for autonomous agents

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.

Decide

Render the governed Decision without requiring quantitative fields or exposing model-provider internals.

Precompute

Run supported, inspectable calculations before synthesis so the council can use fixed evidence.

Validate

Test a completed Decision against the matching supported calculation without rewriting the original result.

Quickstart

1. Authenticate

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.

2. Submit a job

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.

3. Poll until terminal

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"
  }
}

Request reference

FieldTypeNotes
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.

Decision-first quantitative refinement

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.

ModeUse it whenCurrent 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.

What the calculations answer

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.

Response reference

FieldNotes
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.

Errors

StatusMeaningWhat 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.

Limits

Semantic Admission

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.

Credits

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.

Data handling

Agent API traffic is governed by the following controls:

Get access

  1. Create a Wolf You Feed account and sign in.
  2. Open Settings → API Access.
  3. Request an Agent key and introductory credits. A short note about your use case is optional and helps us prioritize.
  4. When approved, copy the key once and store it in a secrets manager.