<?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: Null Jerry</title>
    <description>The latest articles on DEV Community by Null Jerry (@null_jerry_40202ccb6fa17e).</description>
    <link>https://dev.to/null_jerry_40202ccb6fa17e</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%2F4140715%2Ff16f7222-f530-4ba6-ba83-09a9a3f56b9d.png</url>
      <title>DEV Community: Null Jerry</title>
      <link>https://dev.to/null_jerry_40202ccb6fa17e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/null_jerry_40202ccb6fa17e"/>
    <language>en</language>
    <item>
      <title>One API key, two endpoints: a safer first call with Claude and GPT</title>
      <dc:creator>Null Jerry</dc:creator>
      <pubDate>Thu, 24 Sep 2026 14:08:27 +0000</pubDate>
      <link>https://dev.to/null_jerry_40202ccb6fa17e/one-api-key-two-endpoints-a-safer-first-call-with-claude-and-gpt-55g</link>
      <guid>https://dev.to/null_jerry_40202ccb6fa17e/one-api-key-two-endpoints-a-safer-first-call-with-claude-and-gpt-55g</guid>
      <description>&lt;p&gt;A valid API key does not mean every model accepts the same request path. When you switch models, check the model's supported endpoint before changing only the model name.&lt;/p&gt;

&lt;p&gt;I operate YonshoreAPI. Its public model catalogue at &lt;a href="https://api.yonshore.com/api/pricing" rel="noopener noreferrer"&gt;https://api.yonshore.com/api/pricing&lt;/a&gt; lists each model's supported endpoint type. On 24 September 2026, &lt;code&gt;claude-haiku-4-5-20251001&lt;/code&gt; listed Chat Completions (&lt;code&gt;openai&lt;/code&gt;), while &lt;code&gt;gpt-5.6-sol&lt;/code&gt; listed Responses (&lt;code&gt;openai-response&lt;/code&gt;). These examples describe the current catalogue, not a guarantee of future availability.&lt;/p&gt;

&lt;p&gt;Create a limited key in your dashboard, keep it in an environment variable, and confirm that the account has usable balance. A live request can consume that balance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Claude: Chat Completions
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;YONSHORE_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your_key_here"&lt;/span&gt;

curl https://api.yonshore.com/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 &lt;/span&gt;&lt;span class="nv"&gt;$YONSHORE_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&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-haiku-4-5-20251001","messages":[{"role":"user","content":"Reply with OK"}],"max_tokens":16}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  GPT: Responses
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.yonshore.com/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 &lt;/span&gt;&lt;span class="nv"&gt;$YONSHORE_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&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":"gpt-5.6-sol","input":"Reply with OK"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Chat Completions, inspect non-empty output in &lt;code&gt;choices[0].message.content&lt;/code&gt;. For Responses, check that the response completed and contains output text. In both cases, inspect usage and the account ledger before sending production traffic. An HTTP 200 response containing an error object is not a successful model call.&lt;/p&gt;

&lt;p&gt;If you get 401, check the key and Bearer header without posting the key in a screenshot. For 400, check both the model ID and endpoint type against the live catalogue. A 429 indicates a limit. After a timeout, check whether the original request completed before retrying.&lt;/p&gt;

&lt;p&gt;The corrected &lt;a href="https://github.com/jerrynullmmo/yonshoreapi-quickstart" rel="noopener noreferrer"&gt;quickstart&lt;/a&gt; has curl, Python and Node examples. YonshoreAPI currently does not support access, registration or calls from mainland China; use elsewhere also depends on the relevant upstream provider's rules.&lt;/p&gt;

&lt;p&gt;Disclosure: I operate YonshoreAPI. This is an integration walkthrough, not an independent benchmark or a promise of savings or availability.&lt;/p&gt;

</description>
      <category>api</category>
      <category>tutorial</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
