# API Annotations, LabelKey?

**URL:** <https://forum.inductiveautomation.com/t/api-annotations-labelkey/110859>\
**Category:** Module Development\
**Tags:** ignition83\
**Created:** [September 23, 2025, 12:39am UTC](https://forum.inductiveautomation.com/t/api-annotations-labelkey/110859 "2025-09-23T00:39:49Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [September 23, 2025, 12:39am UTC](https://forum.inductiveautomation.com/t/api-annotations-labelkey/110859/1 "2025-09-23T00:39:49Z")

</div>

Is there a way to use a an i18n key for an extension point's config field label?

> **[com.inductiveautomation.ignition.gateway.dataroutes.openapi.annotations](https://files.inductiveautomation.com/sdk/javadoc/ignition83/8.3.0/com/inductiveautomation/ignition/gateway/dataroutes/openapi/annotations/package-summary.html)**
>
> declaration: package: com.inductiveautomation.ignition.gateway.dataroutes.openapi.annotations

I was expecting to find an `@LabelKey` annotation available, but that doesn't exist.

I've tried using the `@TitleKey`, but that doesn't seem to do anything for the `ExtensionPointResourceForm` UI. My category + description keys are working as expected.

```kotlin
data class SnmpNetworkConfig(
    @FormCategoryKey("Snmp.config.Network")
    @TitleKey("Snmp.config.Network.Hostname.Name")
    @DescriptionKey("Snmp.config.Network.Hostname.Description")
    @FormField(FormFieldType.TEXT)
    @Required
    val hostname: String,

    @FormCategoryKey("Snmp.config.Network")
    @TitleKey("Snmp.config.Network.Port.Name")
    @DescriptionKey("Snmp.config.Network.Port.Description")
    @DefaultValue("161")
    @FormField(FormFieldType.NUMBER)
    @Required
    val port: Int,
)

```

P.S. This is my actual code 🙃

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [September 23, 2025, 12:43am UTC](https://forum.inductiveautomation.com/t/api-annotations-labelkey/110859/2 "2025-09-23T00:43:49Z")

</div>

In my drivers, I had to use `@Label()`, and had to include the asterisk marker for required fields explicitly. No such thing as `@LabelKey()`, yet.

Like so:

```python
    public record Behavior(
            @FormCategoryKey("modbus.Category.Behavior")
            @FormField(FormFieldType.NUMBER)
            @Label("Concurrent Requests *")
            @Required
            @Maximum("500")
            @Minimum("1")
            @DefaultValue("1")
            @DescriptionKey("modbus.MaxOutstanding.Desc")
            int maxOutstanding,

            @FormCategoryKey("modbus.Category.Behavior")
            @FormField(FormFieldType.NUMBER)
            @Label("Execution Timeout *")
            @Required
            @Maximum("60000")
            @Minimum("100")
            @DefaultValue("1000")
            @DescriptionKey("modbus.ExecTimeout.Desc")
            int execTimeout,

```

Also actual code...

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [September 23, 2025, 1:01am UTC](https://forum.inductiveautomation.com/t/api-annotations-labelkey/110859/3 "2025-09-23T01:01:12Z")

</div>

Yeah unfortunately we've taken a step backwards in functionality here. I'm not sure what the plan or timeline is to make improvements, but we're definitely aware.
