> For the complete documentation index, see [llms.txt](https://docs.january.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.january.ai/client-sdks/react-native-sdk/reference/client-and-resources.md).

# Client and resources

`JanuaryClient` is the package's entry point.

```ts
new JanuaryClient({ endUserId, timezone, clientTokenProvider });
```

| Option                | Type                   | Notes                                                                                                                                                              |
| --------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `endUserId`           | `string`               | Required. See [User identity and timezone](/client-sdks/react-native-sdk/concepts/user-identity-and-timezone.md).                                                  |
| `timezone`            | `string`               | An IANA name; recommended. Same page.                                                                                                                              |
| `clientTokenProvider` | `JanuaryTokenProvider` | `(endUserId) => Promise<{ token, expiresIn }>`; see [Authentication](/client-sdks/react-native-sdk/getting-started/authentication.md).                             |
| `developmentApiKey`   | `string`               | Debug builds only; replaces `clientTokenProvider`. See [Development API key](/client-sdks/react-native-sdk/getting-started/authentication.md#development-api-key). |

`clientTokenProvider` and `developmentApiKey` are mutually exclusive in the TypeScript types.

| Resource       | Purpose                                                        |
| -------------- | -------------------------------------------------------------- |
| `foods`        | Autocomplete, search, get a food, barcode lookup, alternatives |
| `restaurants`  | Restaurant search, menu-item search, restaurant menus          |
| `foodAnalysis` | Description analysis, photo analysis, corrections              |
| `foodLogs`     | Create, list, summarize, update, and delete food logs          |
| `waterLogs`    | Log water, read daily totals, delete a log                     |
| `weightLogs`   | Log a weight, read the latest weight per day                   |
| `glucose`      | Personalized glucose prediction                                |

`dispose()` releases the client; see [Client lifecycle](/client-sdks/react-native-sdk/concepts/client-lifecycle.md).

Other exports:

* `getNativeModuleVersion()` returns the package version, such as `"0.3.0"`, when the native module is linked, and `null` when it isn't ([Confirm linking](/client-sdks/react-native-sdk/getting-started/installation.md#confirm-linking)).
* `VoiceCaptureSession` and `VoiceCaptureError`; see [Voice capture](/client-sdks/react-native-sdk/guides/voice-capture.md).
* `FoodCategory`, with the category strings `generic`, `branded`, and `recipe` as constants.
