Parse, test, and grade any OpenAPI or Swagger spec.

A free online OpenAPI and Swagger tool. Paste a spec URL to parse it, send requests without CORS errors, validate responses against the schema, score the API design from 0 to 100, and generate TypeScript types and tests.

Works with raw JSON or YAML links and hosted Swagger UI pages.

No spec handy? Try one:

One tab instead of four tools

Swagger UI shows the docs, Postman sends the request, a linter grades the design, and a generator writes the types. APIForge does all four against the same spec.

  1. Read the docs

    Every operation grouped by tag, with parameters and response schemas next to it.

    apiforge / swagger-petstoreExample
    POST/pet

    Add a new pet to the store

    Parameters
    • namestringrequired
    • statusstringoptional
    Responses
    • 200Petapplication/json

    Replaces: Swagger UI

  2. Send the request

    Run it from the browser, or through the proxy when CORS blocks it. Bearer, Basic, and API-key auth are built in.

    apiforge / swagger-petstoreExample
    POSThttps://petstore.example/v2/petSend
    Response200 OK · 142 ms
    {
      "id": 101,
      "name": "Biscuit",
      "status": "available"
    }

    Replaces: Postman

  3. Grade the design

    Seven rule-based pillars give a 0–100 score. Every issue names the route.

    apiforge / swagger-petstoreExample
    86/100Design score
    Flagged
    • GET /pet/findByStatusverb in path
    • DELETE /pet/{petId}no 404 response
    • PUT /petmissing description

    Replaces: a linter

  4. Write the types

    TypeScript for one endpoint or the whole API, plus tests you can run on the spot.

    apiforge / swagger-petstoreExample
    pet.tsTypeScript
    export interface Pet {
      id: number;
      name: string;
      status?: "available" | "sold";
      tags?: Tag[];
    }

    Replaces: a type generator

See what the score catches

Every route is checked against twelve rules. Fix a group and the score moves.

Example: score rises from 38 to 86 as the four rule groups are fixed

  1. Naming

    Verbs in paths, underscores, camelCase, and singular next to plural.

    Naming · exampleExample
    • POST/getUserOrdersVerb in the path
      GET/users/{id}/ordersFixed
    • GET/user_ordersUnderscores in the path
      GET/user-ordersFixed

    Score after: 52 (from 38)

  2. HTTP semantics

    A GET with a request body, or the verb repeated in the method and the path.

    HTTP semantics · exampleExample
    • GET/searchRequest body on a GET
      POST/searchFixed

    Score after: 66 (from 52)

  3. Responses and errors

    No documented success response, and no error responses.

    Responses and errors · exampleExample
    • DELETE/pets/{id}No error responses
      DELETE/pets/{id}+ 404, 409Fixed

    Score after: 77 (from 66)

  4. Docs and versions

    No summary or description, no version in the path, paths nested too deep, duplicate operations.

    Docs and versions · exampleExample
    • GET/api/petsNo version in the path
      GET/v1/petsFixed

    Score after: 86 (from 77)

Where the 100 points come from

Seven pillars share the 100 points, and each rule a route breaks takes points off its pillar. The rules are fixed, so the same spec always gets the same score.

How the score works
score breakdown · exampleExample
  • Naming818/20
  • HTTP semantics718/20
  • Structure913/15
  • Consistency512/15
  • Versioning110/10
  • Error handling38/10
  • Documentation57/10
Total3886/100

From URL to validated request

No install, no account, no collection to import. The spec is the starting point and everything after it happens in the same tab.

Drop in an OpenAPI or Swagger link. That is the whole setup.

  1. PasteDrop in an OpenAPI or Swagger link. That is the whole setup.
  2. ParsePaths, methods, tags, and schemas are read into a browsable list of endpoints.
  3. RunPick an endpoint, fill in the parameters, and send a real request from the workspace.
  4. ValidateThe response is checked against the schema the spec promised.
  5. ScoreTwelve rules grade the design of every route, so weak spots show up early.
  6. ExportTake the result with you as types, a cURL command, or a Postman collection.

Ship it. We'll judge it.

Drop in a spec and get a roast written about your actual endpoints: a score, a reaction meme, the worst offences, and what to fix first.

Roast my API

Open your spec in APIForge

Free. No account, no install.

Works with raw JSON or YAML links and hosted Swagger UI pages.

APIForge runs on free-tier AI models. or star it on GitHub.