> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://learning.postman.com/llms.txt.

# Design API specifications in Postman

Take an API-first approach to development with *Spec Hub* in Postman. You can create OpenAPI, AsyncAPI, protobuf, GraphQL, and Smithy specifications. You can also import existing specifications into Spec Hub. Navigate using the outline view, and add new sections with snippets. Tools such as autocomplete, syntax checking, and live documentation preview help you as you work with OpenAPI and AsyncAPI specifications. For OpenAPI specifications, you can also use Postman's [Visual editor](/docs/design-apis/specifications/spec-hub-visual-editor/), which provides a visual representation of your API's structure, simplifying the design of your OpenAPI specifications.

#### [Try free specification tools — no signup](https://www.postman.com/tools?utm_source=docs\&utm_medium=link\&utm_campaign=signed_out_tools_cta)

Skip the setup and try our free browser tools: [design an API specification from a prompt](https://www.postman.com/tools/api-designer?utm_source=docs\&utm_medium=link\&utm_campaign=signed_out_tools_cta), [get a plain-English explanation of any OpenAPI specification](https://www.postman.com/tools/understand-your-api?utm_source=docs\&utm_medium=link\&utm_campaign=signed_out_tools_cta), [edit, lint, and visualize a specification inline](https://www.postman.com/tools/openapi-editor-and-visualizer?utm_source=docs\&utm_medium=link\&utm_campaign=signed_out_tools_cta), [validate a specification, score its design, and autofix common issues](https://www.postman.com/tools/openapi-validator?utm_source=docs\&utm_medium=link\&utm_campaign=signed_out_tools_cta), or [paste JSON and get TypeScript, Python, or Go types](https://www.postman.com/tools/json-to-types?utm_source=docs\&utm_medium=link\&utm_campaign=signed_out_tools_cta). No account required.

When working with OpenAPI, AsyncAPI, or Smithy specifications, use Spec Hub to generate a Postman Collection to share with your users. You can keep the generated collection in sync with your OpenAPI specification. Team members and consumers can use these collections to explore or test your API.

## Supported specification formats

Postman supports the following formats in Spec Hub:

* OpenAPI 2.0, 3.0, and 3.1
* AsyncAPI 2.0 and 3.0
* protobuf 2 and protobuf 3
* GraphQL
* Smithy 2.0

## Design your API in a specification

In Spec Hub, you can [create a specification](/docs/design-apis/specifications/create-a-specification/) in OpenAPI, AsyncAPI, protobuf, GraphQL, and Smithy specifications formats. You can also [import a specification](/docs/design-apis/specifications/import-a-specification/) from your computer or a repository to continue building it out in Spec Hub.

[Edit your specification](/docs/design-apis/specifications/edit-a-specification/) by adding new sections with pre-formatted snippets, generating a schema from a JSON body, or using autocomplete suggestions (OpenAPI and AsyncAPI only). For OpenAPI specifications, you can also edit interactively with the [Visual editor](/docs/design-apis/specifications/spec-hub-visual-editor/), a form-based view that doesn't require writing YAML or JSON. You can also organize your OpenAPI and protobuf specifications into [multiple files and folders](/docs/design-apis/specifications/add-files-to-a-specification/). As you build out your specification, Postman identifies [syntax errors and API governance issues](/docs/design-apis/specifications/validate-a-specification/) based on your team's configured rules (OpenAPI and AsyncAPI only).

Postman also displays a [live preview of your API's documentation](/docs/design-apis/specifications/view-live-documentation/) to help you visualize your changes.

If you're on a Postman Enterprise plan, you can [create reusable components](/docs/design-apis/specifications/component-library/) for OpenAPI specifications in your team's Component Library. This enables your team to maintain and standardize components in a single place. Your teammates can reuse published components in their specifications.

## Collaborate with others on your specification

[Collaborate](/docs/design-apis/specifications/collaborate-with-specifications/) with your team on API specifications in Postman. You can [share a link to your specification](/docs/design-apis/specifications/collaborate-with-specifications#share-a-specification) with others to get feedback, coordinate changes, or let others review it.

Use Postman's [version control](/docs/design-apis/specifications/collaborate-with-specifications#version-control-for-specifications) to fork your specification and make changes in the fork. Use [version tags](/docs/design-apis/specifications/collaborate-with-specifications#add-a-version-tag-to-the-changelog) to iterate your specification as it evolves. You can also [view the changelog](/docs/design-apis/specifications/collaborate-with-specifications#view-specification-changes-with-the-changelog) to see who made changes, when they were made, and where the edits were made in the specification.

Users can [add comments](/docs/design-apis/specifications/collaborate-with-specifications#comment-on-a-specification) to your specification in Spec Hub to discuss and collaborate in Postman, keeping the conversation in context and visible to other users.

## Generate a collection from a specification

Once you've designed and tested your API's structure in a specification, automatically generate a collection to share with your team members and consumers. Generate a collection from your API specification to create a collection with folders, requests, and response examples based on the specification.

You can keep a collection and its specification [in sync](/docs/design-apis/specifications/generate-collections/#keep-collections-in-sync-with-an-openapi-specification) if it was generated from an OpenAPI specification. When you make changes to the OpenAPI specification, update the generated collection with your latest changes.

If you make changes to the generated collection, you can update the specification to include the collection's changes. This ensures team members and consumers can explore, test, and collaborate on the latest iteration of your API.

Learn how to [generate a collection from a specification and keep them in sync](/docs/design-apis/specifications/generate-collections/).