Convert curl & Postman to OpenAPI 3.2
Extensible production-grade conversion framework. Paste a curl command or import a Postman collection, get a valid, well-structured OpenAPI 3.2 document with smart schema inference and path template detection.
Convert in seconds
import { curlToOpenApi } from "@powerduck/x-to-openapi"; // Full ConvertOptions — all fields shown const result = await curlToOpenApi(`curl -X POST https://api.example.com/v1/users \ -H "Content-Type: application/json" \ -d '{"name": "John", "email": "john@example.com"}'`, { openapiVersion: "3.2.0", // Output OpenAPI version title: "User API", // Document title version: "1.0.0", // Document version description: "User management API", // Document description inferPathParameters: true, // Detect /users/123 → /users/{userId} pathParameterMinSamples: 2, // Min samples before inferring params inferSecurity: true, // Infer auth from headers/cookies includeCommonHeaders: false, // Include User-Agent, Accept, etc. includeCookies: false, // Include cookies (default: false, live session risk) includeExamples: true, // Include request/response examples useServerBasePath: true, // Collapse common origin into servers[0] validate: true, // Validate output against OpenAPI 3.2 strict: false, // Strict mode: fail on warnings }); // ConvertResult: { document, requests, diagnostics, ok, documentValid } console.log(`OK: ${result.ok}, Valid: ${result.documentValid}, Requests: ${result.requests.length}`); console.log(JSON.stringify(result.document, null, 2));
Smart, accurate conversion
Built for developers who need reliable OpenAPI generation from existing API artifacts.
curl Command Parsing
Parse complex curl commands with flags, headers, data, auth, and more via CurlAdapter. Handles multi-line commands and shell escaping.
Postman Collection Import
Convert Postman v2.0/v2.1 collections via PostmanAdapter. Preserves folders, requests, headers, bodies, and test scripts as x-postman-scripts.
Schema Inference
Automatically infer JSON Schemas from request/response bodies via jsonSchema() and mergeSchemas(). Merge multiple examples into unified schemas.
Extensible Adapter Framework
XToOpenApi class with register(adapter) and convert(format, input, options). Write your own adapter for any source format.
Path Template Detection
buildPathTemplates() and looksLikeIdentifier() automatically detect path parameters from URLs. Convert /users/123 to /users/{userId}.
Output Validation
Every generated document is validated against OpenAPI 3.2 via validateOpenApi32(). Get detailed diagnostics for any issues via DiagnosticBag.
Two built-in adapters
Production-grade adapters for the most common API artifact formats.
CurlAdapter
Convert curl commands to OpenAPI operations. Supports all common curl flags including -X, -H, -d, --data, --data-binary, --form, -u, --user, and more.
- Single and multi-line commands
splitCurlCommands()for batch scripts- Header and body parsing
- Authentication detection
- Query parameter extraction
PostmanAdapter
Convert Postman Collection v2.0/v2.1 to OpenAPI 3.2. Maps folders to tags, requests to operations, and preserves examples and test scripts.
- Collection v2.0 and v2.1 support
- Folder-to-tag mapping
- Request/response examples
- Variable resolution
- Test scripts preserved as x-postman-scripts
Core API
| Parameter | Type | Description |
|---|---|---|
| inputrequired | string | string[] | curl command(s), single or multi-line |
| options.title | string | API title default: "Converted API" |
| options.version | string | API version default: "1.0.0" |
| options.servers | string[] | Server URLs |
ConvertResult { document: OpenApi32Document; operations: number; diagnostics: Diagnostic[] }Accepts Postman Collection v2.0/v2.1 as parsed object or JSON string. Test scripts preserved as x-postman-scripts for compatibility with @powerduck/openapi-request.
| Method | Description |
|---|---|
| constructor(options?) | Create with optional title, version, servers |
| register(adapter) | Register a source adapter |
| convert(format, input, options?) | Convert input using the adapter matching format |
string[] — Array of individual curl command strings
Used internally by adapters. Assembles paths, schemas, tags, and servers into a valid OpenAPI 3.2 document.
Alias: validateOpenApiDocument(). Returns validation result with errors and warnings.
Infers type, properties, items, and required fields from a sample JSON value. Use mergeSchemas() to combine multiple inferred schemas.
| Method | Description |
|---|---|
| register(adapter) | Register an adapter |
| unregister(format) | Remove an adapter by format |
| get(format) | Get an adapter by format |
| list() | List all registered adapters |
Extends Error with format, cause, and diagnostics properties for structured error handling.
Methods: addError(), addWarning(), toArray(), hasErrors(). Returned in ConvertResult.