Customize README

By default, the README for your SDKs is generated programmatically. You can customize the content and structure of these README files across all of your SDKs by configuring the readme section in generators.yml.

Configuration options

1readme:
2 bannerLink: "https://example.com/banner"
3 introduction: "Welcome to our API"
4 apiReferenceLink: "https://docs.example.com"
5 apiName: "Example Product"
6 disabledSections:
7 - "contributing"
8 defaultEndpoint:
9 method: "POST"
10 path: "/users"
11 stream: false
12 customSections:
13 - title: "Custom Section"
14 language: "java"
15 content: |
16 This is a custom section. Latest package info is {{ group }}:{{ artifact }}:{{ version }}.
17 - title: "Custom Section"
18 language: "typescript"
19 content: |
20 Custom section for {{ packageName }}
21 - title: "Another Custom Section"
22 language: "typescript"
23 content: |
24 A second custom section for {{ packageName }}
25 features:
26 authentication:
27 - method: "POST"
28 path: "/auth/login"
29 - "GET /auth/profile"
30 users:
31 - method: "GET"
32 path: "/users"
33 - method: "POST"
34 path: "/users"
string

URL for a banner image or link that appears at the top of the README.

introduction
string

Custom introduction text that appears at the beginning of the README.

string

URL to your external API documentation or reference guide.

apiName
string

Name of the API that appears in the README. Will appear as Your Api Name SDK or Your Api Name API throughout the README. Defaults to organization name if not set.

disabledSections
string[]

Sections to disable in the README. Supported values: "contributing".

features
map<string, list<ReadmeEndpointSchema>>

Organizes endpoints into named feature sections within the README. Each feature creates a dedicated section with example code snippets for the specified endpoints.

Endpoint configuration

Specifies which endpoint’s code snippet to showcase as the primary example in the README.

defaultEndpoint.method
stringRequired

HTTP method of the default endpoint (e.g., GET, POST, PUT, DELETE).

defaultEndpoint.path
stringRequired

Endpoint path for the default example (e.g., /users, /auth/login).

defaultEndpoint.stream
booleanDefaults to false

Whether the endpoint is a streaming endpoint. Defaults to false.

Custom sections

Define a custom section in the generated README for a specific SDK.

customSections.title
stringRequired

The title of the custom section as it will appear in the README.

customSections.language
'java' | 'typescript'Required

The target SDK language for this section. The custom section will only appear in README files generated for the specified language.

customSections.content
stringRequired

The Markdown content of the custom section. You can use template variables in the format {{ variable }} that will be dynamically replaced with values specific to each SDK language when the README is generated.

Available template variables by language:

LanguageVariableDescription
TypeScriptpackageNameName of your package, as specified in the package-name field
PythonpackageNameName of your package, as specified in the package-name field
GoownerThe owner of your Go module
GorepoThe repository where your Go module is published
GoversionSDK version
JavagroupMaven groupId from coordinate field
JavaartifactMaven artifactId from coordinate field
JavaversionSDK version
C#/.NETpackageNameName of your package, as specified in the package-name field
PHPpackageNameName of your package, as specified in the package-name field
RubypackageNameName of your package, as specified in the package-name field
SwiftgitUrlThe URL where your Swift package is published. For example, https://github.com/fern-api/basic-swift-sdk
SwiftminVersionSDK version

Additional customization

For customization beyond these configuration options, you can manually modify the README and add it to your .fernignore file to prevent it from being overwritten during regeneration.