> This page is for SDK, version Legacy.
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

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

# Customize method names

> Learn how to customize SDK method names in Fern to create intuitive, user-friendly code. Configure group names and method structures for better API client design.

> **You're viewing the legacy SDK docs**
>
> These pages cover SDK generation configured with `generators.yml`. New projects use `sdk-config.yml`, so see [the Current version of this page](/learn/sdks/deep-dives/customize-method-names) for up-to-date guidance. To move an existing project, follow the [SDK Config migration guide](/learn/sdks/legacy/generators/migration-guides/sdk-config), which walks through `fern sdk migrate`, and review the [`sdk-config.yml` reference](/learn/sdks/reference/sdk-config).

You can fine-tune your SDK method and group names to create intuitive, user-friendly
code that matches your API's purpose. For example, instead of `client.postUsers`
you can configure your SDK to read `client.users.create()`.

## Generated SDK behavior

Fern generates SDK methods using your configured group and method names. Casing is automatically adapted for each language (`snake_case` in Python, `camelCase` in TypeScript, `PascalCase` in Go, etc.), so you define the endpoint structure once and get correctly formatted methods across all generated SDKs.

#### TypeScript

```ts
const response = await client.users.create();
```

#### Python

```python
response = client.users.create()
# or async
response = await async_client.users.create()
```

#### Java

```java
const response = client.users().create();
```

#### Go

```go
const response = client.Users.Create();
```

## Setting up method names

Configure how endpoints map to SDK method and group names in your API definition:

**`openapi.yml`**

```yaml title="openapi.yml" {4-5}
paths:
  /users:
    post:
      x-fern-sdk-group-name: users
      x-fern-sdk-method-name: create
```

For full configuration details, see [Method names in OpenAPI](/learn/api-definitions/openapi/extensions/method-names).

## Ignoring OpenAPI tags

Without extensions, Fern derives group names from operation `tags`. Set [`ignore-tags`](/learn/api-definitions/openapi/extensions/method-names#ignore-tags) in `generators.yml` to ignore tags and derive SDK structure from each operation's `operationId` instead.