<?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: Jake Reinhold</title>
    <description>The latest articles on DEV Community by Jake Reinhold (@jakereinhold).</description>
    <link>https://dev.to/jakereinhold</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%2F4133482%2F1cc1afd3-0c2c-4df0-ae19-c30614b966df.png</url>
      <title>DEV Community: Jake Reinhold</title>
      <link>https://dev.to/jakereinhold</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jakereinhold"/>
    <language>en</language>
    <item>
      <title>How I gave Claude cookie tools a public no-key JSON API</title>
      <dc:creator>Jake Reinhold</dc:creator>
      <pubDate>Sat, 19 Sep 2026 23:21:41 +0000</pubDate>
      <link>https://dev.to/jakereinhold/how-i-gave-claude-cookie-tools-a-public-no-key-json-api-4anf</link>
      <guid>https://dev.to/jakereinhold/how-i-gave-claude-cookie-tools-a-public-no-key-json-api-4anf</guid>
      <description>&lt;p&gt;If you use Claude Code, you have probably hit this wall: the browser stores your login as a &lt;code&gt;sessionKey&lt;/code&gt; cookie, but Claude Code wants &lt;code&gt;~/.claude/.credentials.json&lt;/code&gt;. Two different files, same login.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://claudecookie.com" rel="noopener noreferrer"&gt;claudecookie.com&lt;/a&gt; to bridge the gap. Three tools, one place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Converter&lt;/strong&gt; — turn Netscape &lt;code&gt;cookies.txt&lt;/code&gt;, Cookie-Editor JSON, Puppeteer format, key-value or a raw &lt;code&gt;Cookie&lt;/code&gt; header into each other. Runs entirely in your browser; the paste never leaves your device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check&lt;/strong&gt; — paste a session cookie and it tells you if the session is alive, which plan it belongs to, and how much of the 5-hour and weekly usage windows is left.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credentials&lt;/strong&gt; — same check, then download the &lt;code&gt;~/.claude/.credentials.json&lt;/code&gt; Claude Code actually reads.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The public API
&lt;/h2&gt;

&lt;p&gt;Every one of those three exists as a public JSON API. No API key, CORS is &lt;code&gt;*&lt;/code&gt;, everything over HTTPS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# convert&lt;/span&gt;
curl https://claudecookie.com/api/v1/convert &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;'{"input":"sessionKey=sk-ant-sid01-...","target":"cookie-editor"}'&lt;/span&gt;

&lt;span class="c"&gt;# check&lt;/span&gt;
curl https://claudecookie.com/api/v1/check &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;'{"cookie":"sessionKey=sk-ant-sid01-..."}'&lt;/span&gt;

&lt;span class="c"&gt;# credentials&lt;/span&gt;
curl https://claudecookie.com/api/v1/credential &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;'{"cookie":"sessionKey=sk-ant-sid01-..."}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Batch check accepts up to 10 cookies in one request (&lt;code&gt;{"cookies": ["...", "..."]}&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Rate limits (published, no surprises)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Route&lt;/th&gt;
&lt;th&gt;Budget&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;All &lt;code&gt;/api/v1/*&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;10 req/s per IP (burst 20)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST /convert&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;60/min per IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST /check&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;20/min per IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST /credential&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;5/min and 20/hour per IP; 3/hour per sessionKey&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A &lt;code&gt;429&lt;/code&gt; response carries a &lt;code&gt;Retry-After&lt;/code&gt; header in seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Machine-readable docs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OpenAPI 3.1 spec: &lt;a href="https://claudecookie.com/openapi.json" rel="noopener noreferrer"&gt;https://claudecookie.com/openapi.json&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Short agent-facing summary: &lt;a href="https://claudecookie.com/llms.txt" rel="noopener noreferrer"&gt;https://claudecookie.com/llms.txt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Copy-paste scripts: &lt;a href="https://github.com/Chumbayoumba/claudecookie" rel="noopener noreferrer"&gt;https://github.com/Chumbayoumba/claudecookie&lt;/a&gt; (&lt;code&gt;examples/curl.sh&lt;/code&gt;, &lt;code&gt;examples/check.py&lt;/code&gt;, &lt;code&gt;examples/convert.mjs&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What a check reads
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;account email and plan (Free / Pro / Max)&lt;/li&gt;
&lt;li&gt;5-hour usage window and reset time&lt;/li&gt;
&lt;li&gt;weekly usage window and reset time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It does not log you out, and it does not rotate your cookie on purpose. Treat a live session cookie like a password: only paste a session you control.&lt;/p&gt;

&lt;p&gt;The site also has Russian and Chinese versions. Not made by or endorsed by Anthropic.&lt;/p&gt;

&lt;p&gt;If you end up using the API, tell me what is missing. The whole point of publishing it with no keys is that agents and scripts can just call it.&lt;/p&gt;

</description>
      <category>devtools</category>
      <category>claude</category>
      <category>cookie</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
