API Tester

OpenAI-compatible API tester — run requests in your browser

Test any OpenAI-compatible endpoint right in your browser. Paste a key, pick a model, and inspect the response. No server, no signup, no logs.

Request

What this does

Send a real POST /v1/chat/completions request to any OpenAI-compatible endpoint (Plugsky, OpenAI, Together, Groq, etc.) directly from your browser. The request never touches a server — it goes from your browser to the API.

Use this to test API keys, compare models, debug prompts, and verify endpoints.

Get a Plugsky key

7-day trial for $5. Generate a key, drop it in, ship.

Start $5 trial → API reference
(function(){ function escHtml(s){ return (s||"").replace(/[&<>"']/g, c => ({"&":"&","<":"<",">":">","\"":""","'":"'"}[c])); } document.getElementById('sendBtn').onclick = async function() { var base = document.getElementById('baseUrl').value.replace(/\/$/, ""); var model = document.getElementById('model').value; var key = document.getElementById('apiKey').value; var messages; try { messages = JSON.parse(document.getElementById('messages').value); } catch(e) { return showResult("error", "Invalid JSON in messages field."); } var body = { model: model, messages: messages, temperature: parseFloat(document.getElementById('temp').value), max_tokens: parseInt(document.getElementById('maxTokens').value) }; var out = document.getElementById('result'); out.style.display = 'block'; out.innerHTML = '⏳ Sending request...'; var t0 = Date.now(); try { var r = await fetch(base + '/chat/completions', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + key }, body: JSON.stringify(body) }); var dt = Date.now() - t0; var data = await r.json(); var content = data.choices?.[0]?.message?.content || JSON.stringify(data); out.innerHTML = '
Response (' + dt + 'ms, HTTP ' + r.status + ')
\n' + escHtml(content) + '\n\n
Usage
\n' + escHtml(JSON.stringify(data.usage || {}, null, 2)); } catch (e) { out.innerHTML = '✗ ' + escHtml(e.message); } }; function showResult(kind, msg) { var out = document.getElementById('result'); out.style.display = 'block'; out.innerHTML = msg; } })();