---
title: "Connect a service with its sign-in"
method: POST
path: "/integrations/{provider}/credentials"
tags: ["Connections"]
---

# Connect a service with its sign-in

`POST /integrations/{provider}/credentials`

## Request

- Base URL: `https://bodylab.lol/api/v1`
- URL: `https://bodylab.lol/api/v1/integrations/{provider}/credentials`
- Auth: HTTP bearer

For a service whose connect shape is credentials. The password is exchanged once for the service's session and never stored. Sign-in attempts are rationed; nothing retries one on the athlete's behalf. code_required means the service sent a one-time code, for verifyCode.

## Path parameters

- `provider` string, required: A connected service. Known values: garmin, oura, apple_health. Treat unknown values as "other".

## Headers

- `X-Client-Platform` string
- `X-Client-Version` string

## Request body

- object
  - `identifier` string, required: The account's sign-in name; an email where identifierIsEmail.
  - `password` string, required

## Response `200`

OK

- object
  - `status` string, required: Where the sign-in got to. Known values: connected, code_required. Treat unknown values as "other".

## Other responses

- `401`: Error: UNAUTHORIZED.
- `409`: Error: NOT_OFFERED.
- `422`: Error: SIGN_IN_FAILED.

---

[API](https://skmtc.dev/bodylab/apis/body-lab-api.md) · [All operations](https://skmtc.dev/bodylab/apis/body-lab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bodylab/apis/body-lab-api/revisions/544c201eaf88?raw)
