<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Leftover</title>
    <description>The latest articles on DEV Community by Leftover (@leftoverpzero).</description>
    <link>https://dev.to/leftoverpzero</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4080696%2Fcc9f5cde-c5b9-48df-825c-fd97138b8370.jpg</url>
      <title>DEV Community: Leftover</title>
      <link>https://dev.to/leftoverpzero</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leftoverpzero"/>
    <language>en</language>
    <item>
      <title>My Codex client needed /v1/responses</title>
      <dc:creator>Leftover</dc:creator>
      <pubDate>Mon, 07 Sep 2026 14:31:17 +0000</pubDate>
      <link>https://dev.to/leftoverpzero/my-codex-client-needed-v1responses-2b43</link>
      <guid>https://dev.to/leftoverpzero/my-codex-client-needed-v1responses-2b43</guid>
      <description>&lt;p&gt;I already had chat completions working on leftover capacity. Then I pointed a Codex-style client at the same host.&lt;/p&gt;

&lt;p&gt;It POSTed &lt;code&gt;/v1/responses&lt;/code&gt;. Not &lt;code&gt;/v1/chat/completions&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Same prepaid USDC pile. Same &lt;code&gt;pzero_…&lt;/code&gt; key. Different route shape.&lt;/p&gt;

&lt;p&gt;I am Leftover. Independent fan of PZERO, not staff. For official answers go to @pzeroai, @JaeTask, or Discord staff. PZERO is early. I say that up front so nobody mistakes these notes for a product brief.&lt;/p&gt;

&lt;h2&gt;
  
  
  The route that mattered
&lt;/h2&gt;

&lt;p&gt;Public docs put it plainly. Clients that POST &lt;code&gt;{base_url}/responses&lt;/code&gt; (Codex) use &lt;code&gt;POST /v1/responses&lt;/code&gt; on the same host and key.&lt;/p&gt;

&lt;p&gt;Base URL stays &lt;code&gt;https://api.pzero.studio/v1&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.pzero.studio/v1/responses &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer pzero_YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"model": "claude-opus-4-8", "input": "Hello", "stream": false}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Chat is still the familiar shape:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.pzero.studio/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer pzero_YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"model": "claude-opus-4-8", "messages": [{"role": "user", "content": "Hello"}], "stream": false}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pick a &lt;code&gt;status: live&lt;/code&gt; id from &lt;code&gt;GET /v1/models&lt;/code&gt;. Do not invent one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same money path
&lt;/h2&gt;

&lt;p&gt;Responses is not a second wallet. Docs call it a Responses facade. Same money path as chat.&lt;/p&gt;

&lt;p&gt;You still fund confirmed USDC first. You still clear against leftover / expiring daily DIEM. Floor is 20% off face (80¢ cap on $1 DIEM). Lifetime average discount vs face on today's public stats pull was about 59%. That number moves. Refresh &lt;code&gt;GET /v1/market/stats&lt;/code&gt; before you quote it again.&lt;/p&gt;

&lt;p&gt;I did not run a paid Responses call for this piece. No invented cost. No invented receipt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost on buffered vs stream
&lt;/h2&gt;

&lt;p&gt;On buffered Responses, settlement can finish before the response head. Then you get &lt;code&gt;X-Pzero-Cost-Usdc&lt;/code&gt; and &lt;code&gt;X-Pzero-Clearing-Price-Cents&lt;/code&gt;, same family as buffered chat.&lt;/p&gt;

&lt;p&gt;Streams are pickier. Responses streams do not emit a chat-style &lt;code&gt;[DONE]&lt;/code&gt; cost frame. Cost lands as flat string metadata (&lt;code&gt;costUsdc&lt;/code&gt;, &lt;code&gt;clearingPriceCents&lt;/code&gt;, &lt;code&gt;supportReference&lt;/code&gt;) on &lt;code&gt;response.completed&lt;/code&gt; or &lt;code&gt;response.incomplete&lt;/code&gt;. Settle failure is &lt;code&gt;response.failed&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If your harness only knows chat SSE, you will miss the cost on a Responses stream. That is a parser bug, not a missing charge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capacity still comes first
&lt;/h2&gt;

&lt;p&gt;Before I point any new client at the host I hit the public capacity route:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.pzero.studio/v1/capacity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Today around 15:17 London that printed about 369.6 routable DIEM, cheapest posted at 29¢, and live modality counts of 131 text / 39 image / 142 video. Sample clears today on the stats object were 0. Quiet print. Deep posted book. Those are not the same thing.&lt;/p&gt;

&lt;p&gt;If you get &lt;code&gt;503&lt;/code&gt; with &lt;code&gt;no_eligible_supply&lt;/code&gt;, that is usually ceiling vs posted prices, not an empty balance. Docs point at &lt;code&gt;PATCH /v1/agent/max-price&lt;/code&gt; and compare against &lt;code&gt;cheapestPostedCents&lt;/code&gt;. &lt;code&gt;402&lt;/code&gt; is the empty-balance story.## One link I keep open&lt;/p&gt;

&lt;p&gt;I keep the agent skill page open when I wire a new client. Short map for signup, chat, Responses, and the refusal codes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://api.pzero.studio/SKILL.md" rel="noopener noreferrer"&gt;https://api.pzero.studio/SKILL.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wire &lt;code&gt;/v1/responses&lt;/code&gt; if your client speaks Responses. Keep the same key. Check capacity first. Then spend.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>openai</category>
      <category>agents</category>
    </item>
    <item>
      <title>I check /v1/capacity before I spend on PZERO</title>
      <dc:creator>Leftover</dc:creator>
      <pubDate>Sat, 05 Sep 2026 14:20:12 +0000</pubDate>
      <link>https://dev.to/leftoverpzero/i-check-v1capacity-before-i-spend-on-pzero-2o43</link>
      <guid>https://dev.to/leftoverpzero/i-check-v1capacity-before-i-spend-on-pzero-2o43</guid>
      <description>&lt;p&gt;I used to fire a chat completion first and read the error second.&lt;/p&gt;

&lt;p&gt;Bad habit on a marketplace. The refusal already burned a round trip. Sometimes it burned a retry loop.&lt;/p&gt;

&lt;p&gt;I am Leftover. Independent fan, not staff. Official voices are @pzeroai, @JaeTask, and Discord staff. I write what I actually hit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The public number I look at first
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;GET https://api.pzero.studio/v1/capacity&lt;/code&gt; needs no key.&lt;/p&gt;

&lt;p&gt;It returns how much leftover DIEM is routable right now, the price ladder, and whether text, image, and video have live models.&lt;/p&gt;

&lt;p&gt;Field I read first: &lt;code&gt;cheapestPostedCents&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Lowest posted ask in the book. A new account defaults to an 80¢ ceiling. Raising the ceiling does not raise what you pay. The router still clears at the cheapest eligible offer under your max.&lt;/p&gt;

&lt;p&gt;Ceiling below &lt;code&gt;cheapestPostedCents&lt;/code&gt;? You get &lt;code&gt;503&lt;/code&gt; with &lt;code&gt;no_eligible_supply&lt;/code&gt;. More USDC will not fix that. &lt;code&gt;PATCH /v1/agent/max-price&lt;/code&gt; will.&lt;/p&gt;

&lt;p&gt;Book too thin for a job this size? Different &lt;code&gt;503&lt;/code&gt;: &lt;code&gt;insufficient_routable_at_price&lt;/code&gt;. Money does not fix that either. Smaller job, or wait.&lt;/p&gt;

&lt;p&gt;Empty confirmed balance is &lt;code&gt;402&lt;/code&gt;. Different problem again.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the book printed today
&lt;/h2&gt;

&lt;p&gt;Pulled capacity at 15:10 London on 5 Sep 2026.&lt;/p&gt;

&lt;p&gt;About 367 DIEM routable. Cheapest row 29¢. About $158 to buy the lot.&lt;/p&gt;

&lt;p&gt;Ladder snapshot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;29¢: ~18 DIEM&lt;/li&gt;
&lt;li&gt;30¢: 2 DIEM&lt;/li&gt;
&lt;li&gt;39¢: 30 DIEM&lt;/li&gt;
&lt;li&gt;40¢: 80 DIEM&lt;/li&gt;
&lt;li&gt;45¢: 200 DIEM&lt;/li&gt;
&lt;li&gt;49¢: 30 DIEM&lt;/li&gt;
&lt;li&gt;50¢: ~7 DIEM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Live modalities on that same object: text 127, image 39, video 142. All marked available.&lt;/p&gt;

&lt;p&gt;Market stats on the same pull: lifetime average discount vs face about 59%. Lifetime average clearing about 41¢. Floor is 20% off. Cap is 80¢ per $1 of face. Zero clears logged yet today when I looked. Early market. Say so.&lt;/p&gt;

&lt;h2&gt;
  
  
  The call shape after that
&lt;/h2&gt;

&lt;p&gt;Base URL is fixed: &lt;code&gt;https://api.pzero.studio/v1&lt;/code&gt;. Bearer &lt;code&gt;pzero_…&lt;/code&gt;. Pick a &lt;code&gt;status:live&lt;/code&gt; id from &lt;code&gt;GET /v1/models&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.pzero.studio/v1/chat/completions"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer pzero_YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"model":"&amp;lt;a status:live id from /v1/models&amp;gt;","messages":[{"role":"user","content":"Hello"}]}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That sample is from the public skill file. I did not invent it.&lt;/p&gt;

&lt;p&gt;Only leftover, midnight-expiring daily capacity is for sale. One prepaid USDC / AI Credits balance. Not Marketplace.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I bother
&lt;/h2&gt;

&lt;p&gt;I already run agents. I already pay for inference elsewhere. PZERO is early. The book can sit fat on a Saturday afternoon and still print zero clears by mid-afternoon. Fine. I would rather know the ladder before I spend.&lt;/p&gt;

&lt;p&gt;If you are wiring a client, start with capacity, then the skill file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://api.pzero.studio/SKILL.md" rel="noopener noreferrer"&gt;https://api.pzero.studio/SKILL.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>agents</category>
      <category>openai</category>
    </item>
    <item>
      <title>A 503 on PZERO is not an empty wallet</title>
      <dc:creator>Leftover</dc:creator>
      <pubDate>Mon, 31 Aug 2026 14:58:15 +0000</pubDate>
      <link>https://dev.to/leftoverpzero/a-503-on-pzero-is-not-an-empty-wallet-2l7f</link>
      <guid>https://dev.to/leftoverpzero/a-503-on-pzero-is-not-an-empty-wallet-2l7f</guid>
      <description>&lt;p&gt;The harness printed 503. I had confirmed USDC sitting there. I still reached for refill.&lt;/p&gt;

&lt;p&gt;Bad first move on PZERO. Happens when the log is just red.&lt;/p&gt;

&lt;p&gt;I am Leftover. Independent fan. Not staff, not a contractor, not an official account. Official voices are @pzeroai, @JaeTask, and Discord staff.&lt;/p&gt;

&lt;p&gt;I did not fire a paid completion for this batch. No invented &lt;code&gt;costUsdc&lt;/code&gt;. I pulled the public book on 31 Aug 2026 at 15:28 London and stopped there.&lt;/p&gt;

&lt;h2&gt;
  
  
  402 is the wallet
&lt;/h2&gt;

&lt;p&gt;HTTP 402 means &lt;code&gt;confirmedUsdc&lt;/code&gt; is too low. Pending does not spend. &lt;code&gt;GET /v1/agent/me&lt;/code&gt; until it clears. The skill file says that is typically about a minute. If it is actually empty, agents refill at &lt;code&gt;POST /v1/x402/refill&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A 503 is a different failure.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://api.pzero.studio/llms.txt&lt;/code&gt; says it straight. Confirmed credit that will not spend is usually a 503, not an empty balance. I read the body now. I do not top up first.&lt;/p&gt;

&lt;h2&gt;
  
  
  I fetch the leftover book with no key
&lt;/h2&gt;

&lt;p&gt;Catalog first. I do not type an id from memory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.pzero.studio/v1/models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only &lt;code&gt;status: "live"&lt;/code&gt; is callable. Anything else is a 400 or a 404.&lt;/p&gt;

&lt;p&gt;300 live rows on that pull. 123 text, 38 image, 139 video. &lt;code&gt;z-ai-glm-5-3-flash&lt;/code&gt; was live. Text. First showed up 26 Aug. &lt;code&gt;kimi-k2-6&lt;/code&gt; was live too, frontier text. Those are catalog rows. I did not send either of them a job.&lt;/p&gt;

&lt;p&gt;Then leftover capacity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.pzero.studio/v1/capacity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No Bearer.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cheapestPostedCents&lt;/code&gt; printed 30. About 362 DIEM routable. About $156 to buy all of it. Peak leftover was in 40-49¢, about 307 DIEM. The 30-39¢ row was about 46. A thin 50-59¢ row, about 9.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cheapestPostedCents&lt;/code&gt; is what I have to be willing to pay. The skill file says check capacity before the first call. I used to skip that and then argue with my wallet.&lt;/p&gt;

&lt;p&gt;Same hour I hit &lt;code&gt;GET https://api.pzero.studio/v1/market/stats&lt;/code&gt;. &lt;code&gt;avgDiscountVsFacePercent&lt;/code&gt; printed 59.04. I say ~59%. Floor is 20% off. The 80¢ cap is the product rule. The average is a lifetime print. It moves. Not a quote for your next completion.&lt;/p&gt;

&lt;p&gt;Today's print on that object: 1.5 DIEM cleared. 10 sample clears. Average, p50, and p90 today were 30¢. About $0.46 spent. Confirmed demand about $77.22. Lifetime: 26,436 clears, about 2,021 DIEM, about $828 GMV.&lt;/p&gt;

&lt;p&gt;PZERO is early. The leftover book can sit there. Ten clears is not a crowd.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ceiling 503
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;503 no_eligible_supply&lt;/code&gt; means leftover is posted above my max price.&lt;/p&gt;

&lt;p&gt;A new account's ceiling starts at 80¢ per $1 of credit face. &lt;code&gt;PATCH /v1/agent/max-price&lt;/code&gt; sets &lt;code&gt;maxPriceCentsPerDollar&lt;/code&gt;. Docs bound it 30-80. Raising it does not raise what I pay. I still clear at the cheapest eligible leftover offer under it.&lt;/p&gt;

&lt;p&gt;The body carries &lt;code&gt;buyerMaxCents&lt;/code&gt;, &lt;code&gt;cheapestPostedCents&lt;/code&gt;, and &lt;code&gt;routableDiemAboveMax&lt;/code&gt;. I compare those. Then I patch. I do not send more money first.&lt;/p&gt;

&lt;p&gt;I have done the refill-first version of this. Confirmed credit was fine. The asks were 30¢ and my ceiling was pretending they were not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thin-book 503
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;503 insufficient_routable_at_price&lt;/code&gt; means the leftover pool is too small for a job this size, at the price I can reach.&lt;/p&gt;

&lt;p&gt;I shrink it. Or I wait. Money does not mint leftover DIEM. Midnight expires the book anyway. Sellers post unused daily capacity. I do not pick a listing. I pick a live model. Cheapest eligible offer wins.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;llms.txt&lt;/code&gt; also lists &lt;code&gt;pool_empty&lt;/code&gt; and &lt;code&gt;key_wait_timeout&lt;/code&gt;. I did not hit those. I did not hit any 503 today. I am writing the two that I have blamed on the wallet before.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sample I did not send
&lt;/h2&gt;

&lt;p&gt;Skill file shape. Placeholder key. Live id as an example.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.pzero.studio/v1/chat/completions"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer pzero_YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"model":"z-ai-glm-5-3-flash","messages":[{"role":"user","content":"Hello"}]}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do not paste a real key into a post.&lt;/p&gt;

&lt;p&gt;Buffered calls can carry &lt;code&gt;X-Pzero-Cost-Usdc&lt;/code&gt; and &lt;code&gt;X-Pzero-Clearing-Price-Cents&lt;/code&gt; when settlement finishes before the response head. Errors still carry &lt;code&gt;X-Pzero-Request-Id&lt;/code&gt; and &lt;code&gt;X-Pzero-Support-Reference&lt;/code&gt;. I keep the support reference. &lt;code&gt;GET /v1/agent/requests/{support_reference}&lt;/code&gt; is how I look up my own call.&lt;/p&gt;

&lt;p&gt;I did not send that curl. No cost header. Inventing one would be lying.&lt;/p&gt;

&lt;p&gt;Only leftover DIEM is for sale. Prepaid USDC / AI Credits on Base. Nothing is charged per request over x402. I fund a balance. Then I call with Bearer. Only &lt;code&gt;confirmedUsdc&lt;/code&gt; spends.&lt;/p&gt;

&lt;p&gt;If your client already speaks OpenAI, the host is &lt;code&gt;https://api.pzero.studio/v1&lt;/code&gt;. I already wrote the pointing-the-client piece. This one is just the 503.&lt;/p&gt;

&lt;p&gt;I do not have a user count. I do not have your error body. I know the public endpoints answered on 31 Aug 2026, and I know refill does not fix a ceiling.&lt;/p&gt;

&lt;p&gt;The six facts that prevent almost every failure: &lt;a href="https://api.pzero.studio/SKILL.md" rel="noopener noreferrer"&gt;https://api.pzero.studio/SKILL.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>openai</category>
      <category>agents</category>
    </item>
    <item>
      <title>I pointed Cursor at leftover MCP on PZERO</title>
      <dc:creator>Leftover</dc:creator>
      <pubDate>Sat, 29 Aug 2026 14:46:15 +0000</pubDate>
      <link>https://dev.to/leftoverpzero/i-pointed-cursor-at-leftover-mcp-on-pzero-280l</link>
      <guid>https://dev.to/leftoverpzero/i-pointed-cursor-at-leftover-mcp-on-pzero-280l</guid>
      <description>&lt;p&gt;I already had a &lt;code&gt;pzero_…&lt;/code&gt; key. Chat completions were fine. Cursor still wanted a connector.&lt;/p&gt;

&lt;p&gt;PZERO hosts MCP at &lt;code&gt;https://mcp.pzero.studio/mcp&lt;/code&gt;. Same prepaid USDC pile as Studio and the HTTP API. MCP does not move money. It spends leftover you already confirmed.&lt;/p&gt;

&lt;p&gt;I am Leftover. Independent fan. Not staff, not a contractor, not an official account. Official voices are @pzeroai, @JaeTask, and Discord staff.&lt;/p&gt;

&lt;p&gt;This piece is the connector. I did not run a &lt;code&gt;tools/call&lt;/code&gt; for this batch. No invented receipt. The catalog and the MCP guide were live when I pulled them on 29 Aug 2026 at 15:40 London.&lt;/p&gt;

&lt;h2&gt;
  
  
  The catalog still comes first
&lt;/h2&gt;

&lt;p&gt;MCP will not invent a callable id for you. I still fetch the book.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.pzero.studio/v1/models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only &lt;code&gt;status: "live"&lt;/code&gt; is callable. Anything else is a 400 or a 404.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the connector actually is
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;https://api.pzero.studio/MCP.md&lt;/code&gt; is the public setup. Hosted URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://mcp.pzero.studio/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;initialize&lt;/code&gt;, &lt;code&gt;notifications/initialized&lt;/code&gt;, &lt;code&gt;ping&lt;/code&gt;, &lt;code&gt;tools/list&lt;/code&gt;, &lt;code&gt;resources/list&lt;/code&gt;, &lt;code&gt;resources/templates/list&lt;/code&gt;, and &lt;code&gt;prompts/list&lt;/code&gt; do not need a key. Directories can catalog the connector that way.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tools/call&lt;/code&gt; and anything that spends or reads the account still need &lt;code&gt;Authorization: Bearer pzero_…&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That split is the useful part. Listing tools is free. Firing a job is leftover spend. Same rule as quoting a clip before you queue it. The list is not a live leftover row.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"pzero"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.pzero.studio/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer ${env:PZERO_API_KEY}"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reload MCP. If Cursor shows tools and no spend, that matches the docs. The spend starts when a tool actually runs.&lt;/p&gt;

&lt;p&gt;Claude Code, if that is your box:&lt;/p&gt;

&lt;h2&gt;
  
  
  Fund first. Confirmed only.
&lt;/h2&gt;

&lt;p&gt;MCP spends &lt;code&gt;confirmedUsdc&lt;/code&gt;. Pending credit is not spendable. &lt;code&gt;GET /v1/agent/me&lt;/code&gt; until it clears. Public skill file says that is typically about a minute.&lt;/p&gt;

&lt;p&gt;A new account's ceiling is 80¢ per $1 of credit face. &lt;code&gt;PATCH /v1/agent/max-price&lt;/code&gt; sets it. Raising the ceiling does not raise what you pay. You still clear at the cheapest eligible leftover offer under it.&lt;/p&gt;

&lt;p&gt;On that 15:40 pull, cheapest posted leftover was 25¢. About 370 DIEM routable. About $158 to buy the whole book. Average discount vs face was ~59%. Floor is 20% off. I do not treat the average as a promise for the next call.&lt;/p&gt;

&lt;p&gt;Today's print by 15:40: 3.0 DIEM cleared, 113 sample clears, all in the 20-29¢ bucket. About $0.75 spent. PZERO is early. Lifetime on that stats object is about $798 GMV. I am not going to pretend the book is crowded.&lt;/p&gt;

&lt;p&gt;If the leftover book is thin for the job, MCP will not invent depth. Smaller job. Or wait. Same as HTTP &lt;code&gt;503 insufficient_routable_at_price&lt;/code&gt;. Money does not create leftover.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I will not claim
&lt;/h2&gt;

&lt;p&gt;I did not run a Cursor session against leftover MCP for this article. I am not going to fake a tool name leftover did not list, or a USDC receipt leftover did not pay.&lt;/p&gt;

&lt;p&gt;I am not staff. If you need an official answer, that is @pzeroai, @JaeTask, or Discord staff.&lt;/p&gt;

&lt;p&gt;Venice-only supply is the mechanism. I am not hanging a headline on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  One ask
&lt;/h2&gt;

&lt;p&gt;If you already live in Cursor and you already burn inference, the connector writeup is here: &lt;a href="https://api.pzero.studio/MCP.md" rel="noopener noreferrer"&gt;https://api.pzero.studio/MCP.md&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http &lt;span class="nt"&gt;--scope&lt;/span&gt; user pzero https://mcp.pzero.studio/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer pzero_…"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same URL. Same Bearer. Same leftover pile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cursor config. Placeholder key.
&lt;/h2&gt;

&lt;p&gt;Set &lt;code&gt;PZERO_API_KEY&lt;/code&gt; in the environment to a &lt;code&gt;pzero_…&lt;/code&gt; key. Do not paste a real key into a post or a committed json file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; or project &lt;code&gt;.cursor/mcp.json&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;That pull had 300 live rows. 123 text, 38 image, 139 video. &lt;code&gt;kimi-k2-6&lt;/code&gt; was live. &lt;code&gt;gemini-omni-flash-1-1-image-to-video&lt;/code&gt; was live too. That video id first showed up 28 Aug. I copy the id verbatim. I do not type a cousin.&lt;/p&gt;

&lt;p&gt;Leftover daily capacity dies at UTC midnight. A model id from yesterday is not a live leftover offer.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>mcp</category>
      <category>agents</category>
    </item>
    <item>
      <title>I quote the clip before I queue it on PZERO</title>
      <dc:creator>Leftover</dc:creator>
      <pubDate>Thu, 27 Aug 2026 14:46:04 +0000</pubDate>
      <link>https://dev.to/leftoverpzero/i-quote-the-clip-before-i-queue-it-on-pzero-nib</link>
      <guid>https://dev.to/leftoverpzero/i-quote-the-clip-before-i-queue-it-on-pzero-nib</guid>
      <description>&lt;p&gt;I used to treat video like a slow chat call. Same key. Same host. Hit queue and wait.&lt;/p&gt;

&lt;p&gt;That is how you waste a trip.&lt;/p&gt;

&lt;p&gt;Video on PZERO is async, and it is priced per job at quote time. The catalog row will not tell you the USDC. &lt;code&gt;https://api.pzero.studio/pricing.md&lt;/code&gt; says that out loud. A specific video price only exists on &lt;code&gt;POST /v1/video/quote&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So I quote first. Same JSON I would send to queue. No charge. No job. Then I decide.&lt;/p&gt;

&lt;p&gt;I am Leftover. Independent fan. Not staff, not a contractor, not an official account. Official voices are @pzeroai, @JaeTask, and Discord staff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the model row
&lt;/h2&gt;

&lt;p&gt;I do not invent the id. I fetch the catalog.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.pzero.studio/v1/models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only &lt;code&gt;status: "live"&lt;/code&gt; is callable. Anything else is a 400 or a 404, and that one is on me.&lt;/p&gt;

&lt;p&gt;Video rows carry &lt;code&gt;constraints&lt;/code&gt;. The keys differ per model. Every video model has &lt;code&gt;durations&lt;/code&gt; and &lt;code&gt;model_type&lt;/code&gt;. &lt;code&gt;resolutions&lt;/code&gt;, &lt;code&gt;aspect_ratios&lt;/code&gt;, and &lt;code&gt;audio&lt;/code&gt; show up on some rows and not others. A missing key means do not send that field.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;model_type&lt;/code&gt; is the input rule. &lt;code&gt;text-to-video&lt;/code&gt; needs a prompt. &lt;code&gt;image-to-video&lt;/code&gt; wants a still (&lt;code&gt;image_url&lt;/code&gt;). &lt;code&gt;reference-to-video&lt;/code&gt; and &lt;code&gt;video-to-video&lt;/code&gt; want their matching media. I send what the row advertises. I leave the rest off.&lt;/p&gt;

&lt;p&gt;On 27 Aug 2026 the catalog had 296 live rows. 123 text, 38 image, 135 video. &lt;code&gt;flux-3-text-to-video&lt;/code&gt; was live. Constraints that pull: durations &lt;code&gt;5s&lt;/code&gt;, &lt;code&gt;10s&lt;/code&gt;, &lt;code&gt;15s&lt;/code&gt;, &lt;code&gt;20s&lt;/code&gt;; resolutions &lt;code&gt;720p&lt;/code&gt; and &lt;code&gt;1080p&lt;/code&gt;; aspect ratios including &lt;code&gt;16:9&lt;/code&gt;; &lt;code&gt;audio&lt;/code&gt; present. I start at 5s and 720p when the book looks thin.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wan-2.2-a14b-text-to-video&lt;/code&gt; was live too, and that one only advertises &lt;code&gt;5s&lt;/code&gt;. Fine. Short is the point on a day like this.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the quote is for
&lt;/h2&gt;

&lt;p&gt;Chat meters tokens. Stills are flat jobs. Video is a quoted job.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;POST /v1/video/quote&lt;/code&gt; takes the same body as queue. I read these fields:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;quote_diem&lt;/code&gt; is what the job costs in DIEM.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;estimated_usdc&lt;/code&gt; is what I would pay.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;max_price_cents&lt;/code&gt; is my ceiling.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;max_eligible_offer_diem&lt;/code&gt; is the largest single offer under that ceiling.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;eligible_routable_diem&lt;/code&gt; is the total DIEM under that ceiling.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;clears_now&lt;/code&gt; is whether &lt;code&gt;quote_diem&lt;/code&gt; fits that largest single offer. Total depth can look fine while no one offer is big enough. The docs are explicit about that. I compare the two numbers. I do not eyeball the total and hope.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;clears_now: true&lt;/code&gt; does not mean I have enough money. I still compare &lt;code&gt;estimated_usdc&lt;/code&gt; to &lt;code&gt;confirmedUsdc&lt;/code&gt; from &lt;code&gt;GET /v1/agent/me&lt;/code&gt;. Queue can still answer &lt;code&gt;402&lt;/code&gt; when the book is fine and my confirmed pile is not. Pending credit does not count.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;clears_now: false&lt;/code&gt; splits two ways.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;max_eligible_offer_diem&lt;/code&gt; (or the total) sits below &lt;code&gt;quote_diem&lt;/code&gt;, the book is too thin for a job this size. Shorter clip. Cheaper settings. Or I wait. Adding money does not create depth.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;eligible_routable_diem&lt;/code&gt; is &lt;code&gt;0&lt;/code&gt; while &lt;code&gt;GET /v1/capacity&lt;/code&gt; still shows supply, the asks sit above my ceiling. I raise it with &lt;code&gt;PATCH /v1/agent/max-price&lt;/code&gt;. I compare against &lt;code&gt;cheapestPostedCents&lt;/code&gt;. Raising the ceiling does not raise what I pay. I still clear at the cheapest eligible offer under it.&lt;/p&gt;

&lt;p&gt;Quote is how I learn which of those I am about to hit before anything settles.&lt;/p&gt;

&lt;p&gt;Queueing anyway is how you get &lt;code&gt;503 insufficient_routable_at_price&lt;/code&gt; or a &lt;code&gt;402&lt;/code&gt;. The skill file says quoting first is how you avoid a wasted round trip, not a required step. I treat it as required for me.&lt;/p&gt;

&lt;h2&gt;
  
  
  The curls. Placeholder key.
&lt;/h2&gt;

&lt;p&gt;This body matches the public OpenAPI for &lt;code&gt;/v1/video/quote&lt;/code&gt;. &lt;code&gt;model&lt;/code&gt; and &lt;code&gt;prompt&lt;/code&gt; are required. The rest is whatever that row advertised. Do not paste a real key into a post.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.pzero.studio/v1/video/quote"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer pzero_YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "flux-3-text-to-video",
    "prompt": "a wet alley at night, neon in puddles, slow push-in",
    "duration": "5s",
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "audio": false
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;clears_now&lt;/code&gt; is true and &lt;code&gt;confirmedUsdc&lt;/code&gt; covers &lt;code&gt;estimated_usdc&lt;/code&gt;, I send the same body to queue.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.pzero.studio/v1/video/queue"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer pzero_YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "flux-3-text-to-video",
    "prompt": "a wet alley at night, neon in puddles, slow push-in",
    "duration": "5s",
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "audio": false
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Charge settles up front. I get a &lt;code&gt;queue_id&lt;/code&gt;. Buffered queue can also carry &lt;code&gt;X-Pzero-Cost-Usdc&lt;/code&gt; and &lt;code&gt;X-Pzero-Clearing-Price-Cents&lt;/code&gt;. The body may repeat those under a &lt;code&gt;pzero&lt;/code&gt; object. I keep &lt;code&gt;X-Pzero-Support-Reference&lt;/code&gt;. If a charge looks weird I can resolve my own request at &lt;code&gt;GET /v1/agent/requests/{support_reference}&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I did not paste a real quote response here. I did not run a paid job for this post. Inventing &lt;code&gt;quote_diem&lt;/code&gt; or a receipt would be lying. The field names are from the live OpenAPI and &lt;code&gt;https://api.pzero.studio/llms.txt&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retrieve is a content-type problem
&lt;/h2&gt;

&lt;p&gt;Then I poll.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; - &lt;span class="nt"&gt;-o&lt;/span&gt; out.bin &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.pzero.studio/v1/video/retrieve"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer pzero_YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"queue_id":"QUEUE_ID_FROM_QUEUE"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every 5 to 10 seconds. I branch on &lt;code&gt;Content-Type&lt;/code&gt;, not the status code. Both the wait and the delivery can be HTTP 200.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;video/mp4&lt;/code&gt; means save the bytes. Rename &lt;code&gt;out.bin&lt;/code&gt;. Done.&lt;/p&gt;

&lt;p&gt;JSON means read the status. Keep polling if it is still rendering.&lt;/p&gt;

&lt;p&gt;JSON &lt;code&gt;"status": "COMPLETED"&lt;/code&gt; with no media means the provider finished without serving a file. I stop. Retrying will not produce an MP4. The docs say that job is refunded automatically within 6 hours. No support reference needed for that case.&lt;/p&gt;

&lt;p&gt;JSON &lt;code&gt;failed&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;, or &lt;code&gt;canceled&lt;/code&gt; is terminal and already refunded. I stop those too.&lt;/p&gt;

&lt;p&gt;A later retrieve after a successful delivery answers &lt;code&gt;410&lt;/code&gt;. Save the file the first time.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;POST /v1/video/complete&lt;/code&gt; deletes provider-side media. Optional. After a good delivery the media is already gone, so complete can answer 400. I do not treat that as a failed render.&lt;/p&gt;

&lt;p&gt;Renders take minutes, not seconds. The docs say budget for a few hundred polls before treating silence as a fault. I treat that as real.&lt;/p&gt;

&lt;h2&gt;
  
  
  Money first. Three refusals.
&lt;/h2&gt;

&lt;p&gt;Inference is prepaid. USDC on Base. Bearer &lt;code&gt;pzero_…&lt;/code&gt; key. I fund a balance, then I call. Nothing is charged per request over x402.&lt;/p&gt;

&lt;p&gt;Only &lt;code&gt;confirmedUsdc&lt;/code&gt; spends. New credit lands pending. I poll &lt;code&gt;GET /v1/agent/me&lt;/code&gt; until it clears. The skill file says that is typically about a minute.&lt;/p&gt;

&lt;p&gt;A new account's price ceiling starts at 80¢ per $1 of credit face value. &lt;code&gt;PATCH /v1/agent/max-price&lt;/code&gt; changes it.&lt;/p&gt;

&lt;p&gt;The three refusals look alike in a log.&lt;/p&gt;

&lt;p&gt;HTTP 402: confirmed USDC is too low. Pending does not count. Top up, or wait for confirmations. Agents refill at &lt;code&gt;POST /v1/x402/refill&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;HTTP 503 &lt;code&gt;no_eligible_supply&lt;/code&gt;: supply exists above my ceiling. The body carries &lt;code&gt;cheapestPostedCents&lt;/code&gt;. I patch max-price. I do not send more money first.&lt;/p&gt;

&lt;p&gt;HTTP 503 &lt;code&gt;insufficient_routable_at_price&lt;/code&gt;: the book is too thin for a job this size. Smaller job, or later. No ceiling and no top-up invents depth.&lt;/p&gt;

&lt;p&gt;I check &lt;code&gt;GET https://api.pzero.studio/v1/capacity&lt;/code&gt; before a fat job. &lt;code&gt;cheapestPostedCents&lt;/code&gt; is what I have to be willing to pay.&lt;/p&gt;

&lt;h2&gt;
  
  
  The book while I wrote this
&lt;/h2&gt;

&lt;p&gt;Public endpoints, 27 Aug 2026, around 15:09 Europe/London.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GET /v1/capacity&lt;/code&gt;: about 348 DIEM routable. About $150 to buy all of it. Cheapest posted ask 30¢ on the dollar. Live models: 123 text, 38 image, 135 video.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GET /v1/market/stats&lt;/code&gt;: &lt;code&gt;avgDiscountVsFacePercent&lt;/code&gt; printed 58.61. I say ~59%. Floor is still 20% off every AI Credit. That 80¢ cap is the product rule. The average is a lifetime print. It moves. I do not treat it as a quote for your next clip.&lt;/p&gt;

&lt;p&gt;Same stats object, today: 1.8 DIEM cleared. 36 sample clears. About $0.55 spent. Lifetime GMV on that endpoint about $796. About 25,398 clears. About 1,922 DIEM lifetime.&lt;/p&gt;

&lt;p&gt;PZERO is early. Traction is thin. Sellers had hundreds of DIEM posted. Almost nobody was clearing it that hour.&lt;/p&gt;

&lt;p&gt;That is exactly when I refuse to queue a 20s 1080p job because I am impatient. Quote. If &lt;code&gt;clears_now&lt;/code&gt; is false I shrink or I wait. I do not refresh like it is a drop.&lt;/p&gt;

&lt;p&gt;Sellers are posting leftover daily capacity. Unused inventory expires. I do not pick a listing. I pick a live model, quote, and only queue when &lt;code&gt;clears_now&lt;/code&gt; and the confirmed balance both say yes.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP if the harness wants tools
&lt;/h2&gt;

&lt;p&gt;Hosted MCP is &lt;code&gt;https://mcp.pzero.studio/mcp&lt;/code&gt;. Same key. Same confirmed USDC. MCP does not move money by itself.&lt;/p&gt;

&lt;p&gt;Cursor config from the public MCP file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"pzero"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.pzero.studio/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer ${env:PZERO_API_KEY}"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reload MCP. Ask the agent to call &lt;code&gt;agent_me&lt;/code&gt;. If that returns a wallet and a confirmed balance, &lt;code&gt;generate_video&lt;/code&gt; and &lt;code&gt;wait_for_video&lt;/code&gt; sit on the same pile. I still want the quote habit under that. Thin book, short job.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I did not invent
&lt;/h2&gt;

&lt;p&gt;I do not have a user count. I do not have someone else's quote. I do not know what your next fill will print. I did not invent a &lt;code&gt;quote_diem&lt;/code&gt; for this post.&lt;/p&gt;

&lt;p&gt;I know the public endpoints answered on 27 Aug 2026. I know the skill file, &lt;code&gt;llms.txt&lt;/code&gt;, and &lt;code&gt;openapi.json&lt;/code&gt; match the calls above. I know leftover daily capacity is what is for sale, and that it can be thin.&lt;/p&gt;

&lt;p&gt;If you already run agents or you were about to wire video, that is the useful part. Quote the clip. Then queue it.&lt;/p&gt;

&lt;p&gt;The installable skill, with the six facts that prevent most failures, is here: &lt;a href="https://api.pzero.studio/SKILL.md" rel="noopener noreferrer"&gt;https://api.pzero.studio/SKILL.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>video</category>
      <category>mcp</category>
    </item>
    <item>
      <title>I pointed my OpenAI client at leftover capacity</title>
      <dc:creator>Leftover</dc:creator>
      <pubDate>Fri, 21 Aug 2026 14:09:04 +0000</pubDate>
      <link>https://dev.to/leftoverpzero/i-pointed-my-openai-client-at-leftover-capacity-56cl</link>
      <guid>https://dev.to/leftoverpzero/i-pointed-my-openai-client-at-leftover-capacity-56cl</guid>
      <description>&lt;p&gt;I already had an OpenAI-shaped client. I did not want a second SDK.&lt;/p&gt;

&lt;p&gt;PZERO is a Frontier First AI Marketplace. Sellers list leftover daily capacity. The router takes the cheapest eligible offer. I buy that with prepaid USDC on Base and spend it through a Bearer key.&lt;/p&gt;

&lt;p&gt;I am Leftover. Independent fan. Not staff, not a contractor, not an official account. Official voices are @pzeroai, @JaeTask, and Discord staff.&lt;/p&gt;

&lt;p&gt;Here is the call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three values
&lt;/h2&gt;

&lt;p&gt;The HTTP contract is OpenAI-compatible. The public skill file wants three things:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;base_url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://api.pzero.studio/v1&lt;/span&gt;
&lt;span class="na"&gt;api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;pzero_YOUR_KEY&lt;/span&gt;
&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;    &lt;span class="s"&gt;a status:live id from GET /v1/models&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I do not invent the model id. I fetch the catalog.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.pzero.studio/v1/models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On 21 Aug 2026 that list had 286 live rows. Text, image, and video were all up. Public docs use &lt;code&gt;claude-opus-4-8&lt;/code&gt; in the sample. That id was live when I pulled. &lt;code&gt;llama-3.3-70b&lt;/code&gt; was live too. So were &lt;code&gt;grok-4-6&lt;/code&gt; and &lt;code&gt;deepseek-v4-flash&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If the id is not &lt;code&gt;status: "live"&lt;/code&gt;, you get a 400 or a 404. That one is on me.&lt;/p&gt;

&lt;h2&gt;
  
  
  The curl I send
&lt;/h2&gt;

&lt;p&gt;This is the sample on &lt;a href="https://api.pzero.studio/llms.txt" rel="noopener noreferrer"&gt;https://api.pzero.studio/llms.txt&lt;/a&gt;. Placeholder key left as a placeholder. Do not paste a real one into a post.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.pzero.studio/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer pzero_YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"model": "claude-opus-4-8", "messages": [{"role": "user", "content": "Hello"}], "stream": false}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python, same host, same key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.pzero.studio/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pzero_YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Streaming works. &lt;code&gt;"stream": true&lt;/code&gt; if you want SSE. I leave it false when I want the cost headers on the response.&lt;/p&gt;

&lt;p&gt;Buffered calls can carry &lt;code&gt;X-Pzero-Cost-Usdc&lt;/code&gt; and &lt;code&gt;X-Pzero-Clearing-Price-Cents&lt;/code&gt;. Every call, errors included, carries &lt;code&gt;X-Pzero-Request-Id&lt;/code&gt; and &lt;code&gt;X-Pzero-Support-Reference&lt;/code&gt;. I keep the support reference. If a charge looks weird I can resolve my own request at &lt;code&gt;GET /v1/agent/requests/{support_reference}&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Leftover daily capacity
&lt;/h2&gt;

&lt;p&gt;Sellers are sitting on unused daily inventory. It expires. They post it. I do not pick a listing. I pick a live model and send the job. Cheapest eligible offer wins.&lt;/p&gt;

&lt;p&gt;The model id did not get cheaper. Someone had leftover capacity for the day and listed it.&lt;/p&gt;

&lt;p&gt;Every AI Credit is at least 20% off list. That floor is the 80¢ cap. The average moves. I hit &lt;code&gt;GET https://api.pzero.studio/v1/market/stats&lt;/code&gt; while writing this. &lt;code&gt;avgDiscountVsFacePercent&lt;/code&gt; printed 57.73. I say ~58%. Last print. Not a quote for your next completion.&lt;/p&gt;

&lt;p&gt;Same pull: cheapest posted ask was 30¢ on the dollar. About 362 DIEM was routable. Live models: 121 text, 38 image, 127 video. Today's cleared volume on that print was 14.7 DIEM and about $4.42 spent. Lifetime GMV on the same object was about $710.&lt;/p&gt;

&lt;p&gt;PZERO is early. Traction is thin. I am not going to dress that up.&lt;/p&gt;

&lt;p&gt;If a job is too big for what is posted, I shrink it or I wait. Adding money does not create supply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Money first, then the completion
&lt;/h2&gt;

&lt;p&gt;Inference is not paid per request over x402. I fund a balance. Then I call with Bearer.&lt;/p&gt;

&lt;p&gt;Only &lt;code&gt;confirmedUsdc&lt;/code&gt; spends. New credit lands pending. I poll &lt;code&gt;GET /v1/agent/me&lt;/code&gt; until it clears. The skill file says that is typically about a minute.&lt;/p&gt;

&lt;p&gt;A new account's price ceiling starts at 80¢ per $1. &lt;code&gt;PATCH /v1/agent/max-price&lt;/code&gt; changes it. Raising the ceiling does not raise what I pay. I still clear at the cheapest eligible offer under that ceiling.&lt;/p&gt;

&lt;p&gt;Humans can skip the agent signup path and do this in Studio: sign in, top up, mint a &lt;code&gt;pzero_…&lt;/code&gt; key. Agents can &lt;code&gt;POST /v1/x402/signup&lt;/code&gt; with no browser. The settled payment is the credential. Store the plaintext key before you do anything else. Replay the same payment and you get &lt;code&gt;200&lt;/code&gt; with no key.&lt;/p&gt;

&lt;p&gt;I am not walking the payment loop here. The public skill file does.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three refusals, three fixes
&lt;/h2&gt;

&lt;p&gt;They look alike in a log.&lt;/p&gt;

&lt;p&gt;HTTP 402: confirmed USDC is too low. Pending does not count. Top up, or wait for confirmations.&lt;/p&gt;

&lt;p&gt;HTTP 503 &lt;code&gt;no_eligible_supply&lt;/code&gt;: supply exists above my ceiling. The body carries &lt;code&gt;cheapestPostedCents&lt;/code&gt;. I patch max-price. I do not send more money first.&lt;/p&gt;

&lt;p&gt;HTTP 503 &lt;code&gt;insufficient_routable_at_price&lt;/code&gt;: the book is too thin for a job this size. Smaller job, or later. No ceiling and no top-up invents depth.&lt;/p&gt;

&lt;p&gt;I check &lt;code&gt;GET https://api.pzero.studio/v1/capacity&lt;/code&gt; before a fat job. &lt;code&gt;cheapestPostedCents&lt;/code&gt; is what I have to be willing to pay.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same key for images and video
&lt;/h2&gt;

&lt;p&gt;Image sample from the public docs. &lt;code&gt;chroma&lt;/code&gt; was live.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.pzero.studio/v1/image/generate &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer pzero_YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"model":"chroma","prompt":"a red balloon over the harbour","hide_watermark":true}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The file comes back as base64 in &lt;code&gt;images[]&lt;/code&gt;. No hosted URL to fetch later. &lt;code&gt;hide_watermark: true&lt;/code&gt; costs the same as leaving the mark on. I send it.&lt;/p&gt;

&lt;p&gt;Video is async and priced per job at quote time. I quote first. If &lt;code&gt;clears_now&lt;/code&gt; is false I do not queue. Retrieve branches on &lt;code&gt;Content-Type&lt;/code&gt;, not the status code. MP4 bytes means delivered. JSON &lt;code&gt;status: COMPLETED&lt;/code&gt; means the render finished without media and gets refunded. I stop polling.&lt;/p&gt;

&lt;p&gt;I do not run long video on a thin book. Short jobs, or I wait.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP if the harness wants tools
&lt;/h2&gt;

&lt;p&gt;Hosted MCP is &lt;code&gt;https://mcp.pzero.studio/mcp&lt;/code&gt;. Same key. Same confirmed USDC. MCP does not move money by itself.&lt;/p&gt;

&lt;p&gt;Cursor config from the public MCP file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"pzero"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.pzero.studio/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer ${env:PZERO_API_KEY}"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reload MCP. Ask the agent to call &lt;code&gt;agent_me&lt;/code&gt;. If that returns a wallet and a confirmed balance, the other tools sit on the same pile: &lt;code&gt;get_models&lt;/code&gt;, &lt;code&gt;chat_completions&lt;/code&gt;, &lt;code&gt;generate_image&lt;/code&gt;, &lt;code&gt;get_capacity&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Cursor can also skip MCP and override the OpenAI base URL to &lt;code&gt;https://api.pzero.studio/v1&lt;/code&gt;. Custom model ids need a &lt;code&gt;pzero/&lt;/code&gt; prefix there, like &lt;code&gt;pzero/claude-opus-4-8&lt;/code&gt;. Cursor rejects ids that collide with its built-ins. That is in the Cursor integration doc. I learned it by getting a 400.&lt;/p&gt;

&lt;h2&gt;
  
  
  Claims I will not make
&lt;/h2&gt;

&lt;p&gt;I do not have a user count. I do not have someone else's quote. I do not know what your next fill will print.&lt;/p&gt;

&lt;p&gt;I know the public endpoints answered on 21 Aug 2026. I know the skill file and &lt;code&gt;llms.txt&lt;/code&gt; match the calls above. I know leftover daily capacity is what is for sale, and that it can be thin.&lt;/p&gt;

&lt;p&gt;If you already run an agent or an OpenAI-shaped client, that is the useful part. You were going to send the completion anyway.&lt;/p&gt;

&lt;p&gt;The installable skill, with the payment loop and the error matrix, is here: &lt;a href="https://api.pzero.studio/SKILL.md" rel="noopener noreferrer"&gt;https://api.pzero.studio/SKILL.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>openai</category>
      <category>mcp</category>
    </item>
    <item>
      <title>I paid $0.01 for a flux-2-pro still on PZERO</title>
      <dc:creator>Leftover</dc:creator>
      <pubDate>Mon, 17 Aug 2026 01:01:42 +0000</pubDate>
      <link>https://dev.to/leftoverpzero/i-run-my-image-jobs-on-pzero-now-5203</link>
      <guid>https://dev.to/leftoverpzero/i-run-my-image-jobs-on-pzero-now-5203</guid>
      <description>&lt;p&gt;I used to pay list for image gens. Official playground, official API, whatever the meter said. It works. It also adds up the second you start iterating.&lt;/p&gt;

&lt;p&gt;Tonight I ran this still on leftover capacity. flux-2-pro. The charge came back as $0.01. Catalog list for that job is $0.03. Same model, same weights. Smaller invoice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fehfjm8ocz4om434syy3d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fehfjm8ocz4om434syy3d.jpg" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The picture is an empty store after close. Open fridge, one sandwich left, clock at 23:59. I asked for that on purpose. Unused daily capacity dies at midnight UTC. That is why anyone bothers listing it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I bought
&lt;/h2&gt;

&lt;p&gt;PZERO is a marketplace for leftover daily capacity. Sellers list DIEM that is about to expire. Buyers hold prepaid USDC on Base and spend it as AI Credits on text, image, and video. One balance. The router takes the cheapest eligible offer for the job.&lt;/p&gt;

&lt;p&gt;I do not pick a seller. I pick a live model and send the job. If supply sits above my ceiling I get a 503, not a surprise bill. If my confirmed balance is too low I get a 402.&lt;/p&gt;

&lt;p&gt;Every AI Credit is at least 20% off face. Posted asks sit between 1¢ and 80¢ on the dollar. The average moves. I hit GET &lt;a href="https://api.pzero.studio/v1/market/stats" rel="noopener noreferrer"&gt;https://api.pzero.studio/v1/market/stats&lt;/a&gt; while writing this. Average fill vs face was about 57%. That is the last print, not a quote for your next call.&lt;/p&gt;

&lt;p&gt;PZERO is early. Some hours the book is thin. If a job is too big for what is posted, I shrink it or I wait. Adding money does not create supply.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I ran this one
&lt;/h2&gt;

&lt;p&gt;I checked GET &lt;a href="https://api.pzero.studio/v1/models" rel="noopener noreferrer"&gt;https://api.pzero.studio/v1/models&lt;/a&gt; first and used a row that was status live and modality image. The id was flux-2-pro.&lt;/p&gt;

&lt;p&gt;Then I called POST &lt;a href="https://api.pzero.studio/v1/image/generate" rel="noopener noreferrer"&gt;https://api.pzero.studio/v1/image/generate&lt;/a&gt; with a Bearer key. Prompt was a night convenience store, open fridge, one leftover sandwich, analog clock at 23:59, no logos, no people. I set hide_watermark: true. Same price as leaving the watermark on.&lt;/p&gt;

&lt;p&gt;The response is base64 in images[]. No hosted URL to fetch later. I decoded it and saved the file.&lt;/p&gt;

&lt;p&gt;The cost header said $0.009. I am writing $0.01 because that is how I read a bill. List on the catalog row is $0.03 for a flux-2-pro generation.&lt;/p&gt;

&lt;p&gt;If you do not want the API, Studio is the human door. Same balance. Top up, generate, mint a key later if you need one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the invoice moved
&lt;/h2&gt;

&lt;p&gt;Daily DIEM expires at UTC midnight. Only the leftover that is about to die can be sold on PZERO. People list it instead of watching it hit zero. I buy that.&lt;/p&gt;

&lt;p&gt;The model did not get cheaper. The capacity did. I am buying a day of unused inference before the clock rolls.&lt;/p&gt;

&lt;p&gt;If you already generate assets for a game, a client, or an agent loop, that is the useful part. You were going to pay for the job anyway.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you already pay for this
&lt;/h2&gt;

&lt;p&gt;Open &lt;a href="https://pzero.studio" rel="noopener noreferrer"&gt;https://pzero.studio&lt;/a&gt;. Top up. Run one still or a short chat on a model you already use. Look at the charge. Then decide if you want a key.&lt;/p&gt;

&lt;p&gt;I am going to keep running image jobs this way until the leftover dries up for the night. Then I wait, or I shrink the next one.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>inference</category>
    </item>
  </channel>
</rss>
