> ## Documentation Index
> Fetch the complete documentation index at: https://docs.infinipost.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Start Warmup

> Begin the automated warmup process for a TikTok or Instagram account

## Path Parameters

<ParamField path="accountId" type="string" required>
  The unique account identifier.
</ParamField>

## Request Body

<ParamField body="duration" type="number" default="7">
  Number of days for the warmup process (3-14 days).
</ParamField>

<ParamField body="keywords" type="array">
  Array of keywords to use for content discovery during warmup (e.g., `["fashion", "style", "outfit"]`).

  Default: Platform-appropriate trending keywords.
</ParamField>

## Response

<ResponseField name="accountId" type="string">
  The account identifier.
</ResponseField>

<ResponseField name="platform" type="string">
  Platform: `tiktok` or `instagram`.
</ResponseField>

<ResponseField name="warmupStatus" type="object">
  Warmup configuration and status.

  <Expandable title="properties">
    <ResponseField name="enabled" type="boolean">
      Always `true` after starting warmup.
    </ResponseField>

    <ResponseField name="startedAt" type="string">
      ISO 8601 timestamp of when warmup started.
    </ResponseField>

    <ResponseField name="completionDate" type="string">
      ISO 8601 timestamp of when warmup is expected to complete.
    </ResponseField>

    <ResponseField name="duration" type="number">
      Total duration in days.
    </ResponseField>

    <ResponseField name="keywords" type="array">
      Keywords being used for content discovery.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.infinipost.co/v1/accounts/acc_1a2b3c4d5e/warmup/start \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "duration": 7,
      "keywords": ["fashion", "ootd", "style"]
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.infinipost.co/v1/accounts/acc_1a2b3c4d5e/warmup/start', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      duration: 7,
      keywords: ['fashion', 'ootd', 'style']
    })
  });

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.infinipost.co/v1/accounts/acc_1a2b3c4d5e/warmup/start',
      headers={
          'Authorization': 'Bearer YOUR_API_KEY',
          'Content-Type': 'application/json'
      },
      json={
          'duration': 7,
          'keywords': ['fashion', 'ootd', 'style']
      }
  )

  print(response.json())
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "accountId": "acc_1a2b3c4d5e",
    "platform": "tiktok",
    "warmupStatus": {
      "enabled": true,
      "startedAt": "2024-04-21T20:00:00Z",
      "completionDate": "2024-04-28T20:00:00Z",
      "duration": 7,
      "keywords": ["fashion", "ootd", "style"]
    }
  }
  ```
</ResponseExample>

<Info>
  **What Happens During Warmup?**

  The warmup process gradually ramps up engagement to mimic authentic user behavior and avoid platform restrictions:

  * **Early Days:** Light engagement (views, likes)
  * **Mid-Point:** Follows and comments begin
  * **Later Days:** Full engagement patterns established

  For TikTok: Username can be set after Day 5 of warmup.
</Info>

## Error Responses

```json Unauthorized theme={null}
{
  "error": {
    "code": "unauthenticated",
    "message": "Invalid or missing API key"
  }
}
```

```json Account Not Found theme={null}
{
  "error": {
    "code": "not_found",
    "message": "Account acc_1a2b3c4d5e not found"
  }
}
```

```json Warmup Already Active theme={null}
{
  "error": {
    "code": "warmup_already_active",
    "message": "Warmup is already active for this account"
  }
}
```

```json Server Error theme={null}
{
  "error": {
    "code": "internal",
    "message": "An unexpected error occurred"
  }
}
```
