cURL → SDK
Request
Drop or import a .sh, .txt, Postman, or OpenAPI file
POSTapi.example.com
Output
'use server';
// Add to .env.local — never commit real secrets:
// AUTHORIZATION=Bearer sk-live-xxxxxxxx
const BASE_URL = "https://api.example.com/v1/messages";
export interface RequestPayload {
model: string;
max_tokens: number;
messages: {
role: string;
content: string;
}[];
}
export interface ApiResult<T> {
ok: boolean;
data?: T;
error?: string;
}
export async function callApi(payload: RequestPayload): Promise<ApiResult<unknown>> {
try {
const path = BASE_URL;
const url = path;
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": process.env.AUTHORIZATION!,
},
body: JSON.stringify(payload),
cache: 'no-store',
});
if (!response.ok) {
const message = await response.text();
return { ok: false, error: `Request failed (${response.status}): ${message}` };
}
const data = await response.json();
return { ok: true, data };
} catch (err) {
return { ok: false, error: err instanceof Error ? err.message : 'Unknown error' };
}
}
Turn any curl command
into production-ready code
Paste a curl command and instantly generate typed clients, Next.js Route Handlers and Server Actions, Python, Go, and a full Swagger/OpenAPI spec — entirely inside your browser.
curl https://api.example.com/users \
-H "Authorization: Bearer ..." \
-H "Content-Type: application/json"const res = await fetch(url, {
method: "POST",
headers,
body: JSON.stringify(data),
});Five steps, no config
- 1
Grab a curl command
Copy one from API documentation, or straight from Postman or your browser's DevTools — open the Network tab, right-click a request, and choose "Copy as cURL."
curl https://api.example.com/v1/messages \ -H "Authorization: Bearer sk-live-xxxx" \ -d '{"model":"claude"}' - 2
Paste or drop it in
Paste it into the Request panel, or drag in a .sh script, a .txt file, a Postman collection export, or an OpenAPI spec — up to 5 requests at once across tabs.
Drop to import
.sh · .txt · Postman · OpenAPI
- 3
Pick your target
Choose Next.js Action, Next.js Route, TS + Zod, Python httpx, Go, or Swagger JSON from the Output panel. Switching targets re-generates instantly.
Next.js ActionNext.js RouteTS + ZodPython httpxGoSwagger JSON - 4
Fix anything flagged
Unterminated quotes, malformed headers, invalid JSON, unknown flags, and broken URLs show up as you type, most with a one-click Apply fix.
Request body is not valid JSON: trailing comma.
Common issues were auto-corrected — click Apply fix to use the corrected body.
Apply fix - 5
Copy and ship
Copy the generated code — and the suggested file path for Next.js targets — straight into your project. Secrets are wired to environment variables automatically.
app/api/v1/messages/route.tsexport async function POST(request: Request) { const body = await request.json(); // ... }
How the conversion actually works
No AI, no guesswork — a deterministic pipeline that parses your exact command and only fills gaps with a clear, visible rule.
curl text
raw command
tokens
quote-aware split
method · url · headers · body
structured request
{path} + ?query + types
inferred shape
target code
6 formats
- 1.
curl text — You paste or drop the raw command exactly as copied — no cleanup needed, backslash line-continuations included.
- 2.
tokens — A quote-aware tokenizer splits it the same way a shell would, so quoted headers and JSON bodies survive intact.
- 3.
method · url · headers · body — Flags like -X, -H, and -d get matched into a structured request — the curl-specific syntax disappears at this step.
- 4.
{path} + ?query + types — A segment like 42 that's purely numeric, a UUID, or a Mongo-style ObjectId is renamed from its preceding path segment (projects → projectId), singularized, and reused everywhere.
- 5.
target code — The exact same structured request feeds all six generators — Next.js, TS+Zod, Python, Go, and Swagger all stay perfectly in sync.
Real commands, real output
A plain GET request
curl https://api.example.com/v1/statusasync def call_api() -> dict:
response = await client.request("GET", URL, headers=headers)
return response.json()No body, no query, no fuss — the generated code stays just as short as the request.
A dynamic ID in the path
curl https://api.example.com/v2/projects/42/items?verbose=trueexport interface PathParams {
projectId: string;
}
export interface RequestQuery {
verbose: string;
}The "42" is recognized as a path parameter and named projectId automatically — not hardcoded into the URL string.
An authenticated POST
curl -X POST https://api.example.com/v1/messages \
-H "Authorization: Bearer sk-live-xxxx" \
-d '{"model":"claude"}'headers: {
"Authorization": process.env.AUTHORIZATION!,
},The bearer token is detected as a secret and swapped for an environment variable — it never appears hardcoded in the output.
Frequently asked
- What does a curl to code converter do?
- It parses a curl command — method, URL, headers, and body — and rewrites it as ready-to-use client code in another language or framework, so you don’t have to hand-translate headers, JSON bodies, or auth tokens yourself.
- How do I copy a curl command from Postman or my browser?
- In Chrome or Firefox DevTools, open the Network tab, right-click the request you want, and choose "Copy as cURL". Postman has the same option on any request via its Code snippet or context menu. Paste the result straight into this tool.
- Can this tool generate a Swagger or OpenAPI file from a curl command?
- Yes — the Swagger JSON tab turns your parsed request into an OpenAPI 3.0 document, inferring path, query, and header parameters plus a JSON schema for the request body.
- Does it support importing Postman collections or OpenAPI specs?
- Yes. Drag and drop a Postman collection export or an OpenAPI/Swagger JSON file (or use the import button) and each request or operation becomes its own tab, ready to convert.
- Is my curl command sent to a server anywhere?
- No — parsing, validation, and code generation all run client-side in your browser. Nothing about your request, headers, or tokens is uploaded.
- What if my curl command has a typo or invalid JSON body?
- The tool checks for unterminated quotes, malformed headers, invalid JSON, unrecognized flags, and malformed URLs as you type, and offers a one-click fix for anything it can correct automatically.


