API reference page template

Page front matter

The page front matter in the pages on MDN Web Docs comprises of the YAML headers listed and described below. This YAML content at the top of a page is used to define the "page front matter" or the "page metadata". The values should be updated appropriately when describing a particular interface.

Note: Remove this whole explanatory note before publishing.

---
title: NameOfTheInterface
slug: Web/API/NameOfTheInterface
page-type: web-api-interface
status:
  - experimental
  - deprecated
  - non-standard
browser-compat: path.to.feature.NameOfTheInterface
---
title

Title heading displayed at top of page. This is just the name of the interface. For example, the Request interface page has a title of Request.

slug

The end of the URL path after https://developer.mozilla.org/en-US/docs/). This will be formatted like Web/API/NameOfTheParentInterface. For example, Request slug is "Web/API/Request".

page-type

The page-type key for Web/API interfaces is always web-api-interface.

status

Include (appropriate) technology status keys: experimental, deprecated, non-standard (if not on a standards track).

browser-compat

Replace the placeholder value path.to.feature.NameOfTheMethod with the query string for the method in the Browser compat data repo. The toolchain automatically uses the key to populate the compatibility and specification sections (replacing the {{Compat}} and {{Specifications}} macros).

Note that you may first need to create/update an entry for the API method in our Browser compat data repo, and the entry for the API will need to include specification information. See our guide on how to do this.

Top macros

By default, there are five macro calls at the top of a template. You should update or delete them according to the advice below.

Note: Remove this whole explanatory note before publishing.

  • {{APIRef("GroupDataName")}} — this generates the left-hand reference sidebar showing quick reference links related to the current page. For example, every page in the WebVR API has the same sidebar, which points to the other pages in the API. To generate the correct sidebar for your API, you need to add a GroupData entry to our KumaScript GitHub repo, and include the entry's name inside the macro call in place of GroupDataName. See our API reference sidebars guide for information on how to do this.
  • {{SeeCompatTable}} — this generates a This is an experimental technology banner that indicates the technology is experimental. If the technology you are documenting is not experimental, you can remove this. If it is experimental, and the technology is hidden behind a pref in Firefox, you should also fill in an entry for it in the Experimental features in Firefox page.
  • {{SecureContext_Header}} — this generates a Secure context banner that indicates the technology is only available in a secure context. If it isn't, then you can remove the macro call. If it is, then you should also fill in an entry for it in the Features restricted to secure contexts page.
  • {{Deprecated_Header}} — this generates a Deprecated banner that indicates the technology is deprecated. If it isn't, then you can remove the macro call.
  • {{Interface_Overview("GroupDataName")}} Experimental — this generates the main body of the page (Constructor, Properties, Methods and Events).

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

The summary paragraph — start by naming the interface, saying what API it is part of, and saying what it does. This should ideally be 1 or 2 short sentences. You could copy most of this from the Interface's summary on the corresponding API landing page.

Constructor

NameOfTheInterface()

Creates a new instance of the NameOfTheInterface object.

Static properties

Also inherits properties from its parent interface, NameOfParentInterface. (Note: If the interface doesn't inherit from another interface, remove this whole line.)

NameOfTheInterface.staticProperty1 Read only Deprecated

Include a brief description of the property and what it does here. Include one term and definition for each property. If the property is not readonly/experimental/deprecated, remove the relevant macro calls.

NameOfTheInterface.staticProperty2

etc.

Instance properties

Also inherits properties from its parent interface, NameOfParentInterface. (Note: If the interface doesn't inherit from another interface, remove this whole line.)

NameOfTheInterface.property1 Read only Deprecated

Include a brief description of the property and what it does here. Include one term and definition for each property. If the property is not readonly/experimental/deprecated, remove the relevant macro calls.

NameOfTheInterface.property2

etc.

Static methods

Also inherits methods from its parent interface, NameOfParentInterface. (Note: If the interface doesn't inherit from another interface, remove this whole line.)

NameOfTheInterface.staticMethod1() Experimental Deprecated

Include a brief description of the method and what it does here. Include one term and definition for each method. If the method is not experimental/deprecated, remove the relevant macro calls.

NameOfTheInterface.staticMethod2()

etc.

Instance methods

Also inherits methods from its parent interface, NameOfParentInterface. (Note: If the interface doesn't inherit from another interface, remove this whole line.)

NameOfTheInterface.method1() Experimental Deprecated

Include a brief description of the method and what it does here. Include one term and definition for each method. If the method is not experimental/deprecated, remove the relevant macro calls.

NameOfTheInterface.method2()

etc.

Events

Listen to these events using addEventListener() or by assigning an event listener to the oneventname property of this interface.

eventname1

Fired when (include the description of when the event fires). Also available via the oneventname1 property.

eventname2

Fired when (include a description of when the event fires). Also available via the oneventname2 property.

etc.

Fired when…

Examples

Note that we use the plural "Examples" even if the page only contains one example.

A descriptive heading

Each example must have an H3 heading (###) naming the example. The heading should be descriptive of what the example is doing. For example, "A simple example" does not say anything about the example and therefore, not a good heading. The heading should be concise. For a longer description, use the paragraph after the heading.

See our guide on how to add code examples for more information.

Note: Sometimes you will want to link to examples given on another page.

Scenario 1: If you have some examples on this page and some more examples on another page:

Include an H3 heading (###) for each example on this page and then a final H3 heading (###) with the text "More examples", under which you can link to the examples on other pages. For example:

## Examples

### Using the fetch API

Example of Fetch

### More examples

Links to more examples on other pages

Scenario 2: If you only have examples on another page and none on this page:

Don't add any H3 headings; just add the links directly under the H2 heading "Examples". For example:

## Examples

For examples of this API, see [the page on fetch()](https://example.org).

Specifications

No specification found

No specification data found for path.to.feature.NameOfTheInterface.
Check for problems with this page or contribute a missing spec_url to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

Browser compatibility

BCD tables only load in the browser

See also

Include links to reference pages and guides related to the current API. For more guidelines, see the See also section in the Writing style guide.

  • link1
  • link2