## List Keys `client.v1.customFields.listKeys(CustomFieldListKeysParamsparams?, RequestOptionsoptions?): CustomFieldListKeysResponse` **post** `/v1/customFields/listKeys` List all active custom field keys, optionally filtered by entity type. ### Parameters - **params:** `CustomFieldListKeysParams` - **next\_page:** `string` Query param: Cursor that indicates where the next page of results should start. - **entities:** `Array<"alert" | "billable_metric" | "charge" | 15 more>` Body param: Optional list of entity types to return keys for - `"alert"` - `"billable_metric"` - `"charge"` - `"commit"` - `"contract_credit"` - `"contract_product"` - `"contract"` - `"credit_grant"` - `"customer_plan"` - `"customer"` - `"discount"` - `"invoice"` - `"plan"` - `"professional_service"` - `"product"` - `"rate_card"` - `"scheduled_charge"` - `"subscription"` ### Returns - `CustomFieldListKeysResponse` - **data:** `Array` - **enforce\_uniqueness:** `boolean` - **entity:** `"alert" | "billable_metric" | "charge" | 15 more` - `"alert"` - `"billable_metric"` - `"charge"` - `"commit"` - `"contract_credit"` - `"contract_product"` - `"contract"` - `"credit_grant"` - `"customer_plan"` - `"customer"` - `"discount"` - `"invoice"` - `"plan"` - `"professional_service"` - `"product"` - `"rate_card"` - `"scheduled_charge"` - `"subscription"` - **key:** `string` - **next\_page:** `string | null` ### Example ```node import Metronome from '@metronome/sdk'; const client = new Metronome({ bearerToken: 'My Bearer Token', }); const response = await client.v1.customFields.listKeys({ entities: ['customer'] }); console.log(response.data); ```