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

# Create Partner

> Register a new sub-partner on the Thiqwave platform.

## Endpoint

```
POST https://api.thiqwave.com/v1/partners
```

## Description

Register a new sub-partner in the platform. When you create a sub-partner, Thiqwave provisions an account for that business and returns an API key they can use to call the Thiqwave API directly under your partner umbrella.

## Request

### Headers

<ParamField header="X-API-Key" type="string" required>
  Your Thiqwave API key.
</ParamField>

<ParamField header="Content-Type" type="string" required>
  Must be `application/json`.
</ParamField>

### Body

<ParamField body="name" type="string" required>
  The legal business name of the sub-partner.
</ParamField>

<ParamField body="email" type="string" required>
  Primary contact email address for the sub-partner. Must be a valid email and unique across the platform.
</ParamField>

<ParamField body="businessType" type="string" required>
  The type of business. Common values include `"fintech"`, `"marketplace"`, `"ecommerce"`, and `"remittance"`.
</ParamField>

<ParamField body="country" type="string" required>
  The sub-partner's country of operation. Must be an ISO 3166-1 alpha-2 code. Supported values: `"AE"` (United Arab Emirates). Additional countries are added based on corridor expansion — contact your account manager for current availability.
</ParamField>

## Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.thiqwave.com/v1/partners \
    -H "X-API-Key: your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Noon Payments LLC",
      "email": "api@noonpayments.ae",
      "businessType": "marketplace",
      "country": "AE"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.thiqwave.com/v1/partners', {
    method: 'POST',
    headers: {
      'X-API-Key': 'your-api-key',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      name: 'Noon Payments LLC',
      email: 'api@noonpayments.ae',
      businessType: 'marketplace',
      country: 'AE',
    }),
  });

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

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

  response = requests.post(
      'https://api.thiqwave.com/v1/partners',
      headers={
          'X-API-Key': 'your-api-key',
          'Content-Type': 'application/json',
      },
      json={
          'name': 'Noon Payments LLC',
          'email': 'api@noonpayments.ae',
          'businessType': 'marketplace',
          'country': 'AE',
      },
  )

  partner = response.json()
  ```
</CodeGroup>

## Response

A `201 Created` response returns the newly created partner object.

<ResponseField name="id" type="string">
  The unique identifier for the partner. Use this ID to reference the partner in subsequent API calls.
</ResponseField>

<ResponseField name="name" type="string">
  The business name of the sub-partner.
</ResponseField>

<ResponseField name="email" type="string">
  The primary contact email address.
</ResponseField>

<ResponseField name="status" type="string">
  The current onboarding status of the partner. Possible values: `"pending"`, `"active"`, `"suspended"`.
</ResponseField>

<ResponseField name="apiKey" type="string">
  The API key provisioned for the new sub-partner. Share this securely with the sub-partner — it is only returned once.
</ResponseField>

<ResponseField name="createdAt" type="string">
  The ISO 8601 timestamp of when the partner was created.
</ResponseField>

### Example response

```json theme={null}
{
  "id": "prtnr_01HZ2KJ8VBNC4W3M9RFQTX6YP",
  "name": "Noon Payments LLC",
  "email": "api@noonpayments.ae",
  "status": "pending",
  "apiKey": "tq_live_4f8a2c1d9e3b7f0a5c6d2e8f1a3b9c4d",
  "createdAt": "2026-04-08T10:32:00Z"
}
```

<Warning>
  The `apiKey` field is only returned at creation time. Store it securely immediately — you cannot retrieve it again. If it is lost, you must generate a new key from the dashboard.
</Warning>

## Error responses

| Status | Code               | Description                                                                                                                         |
| ------ | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | `VALIDATION_ERROR` | One or more request fields are invalid or missing. The response body includes a `details` array describing each validation failure. |
| `409`  | `DUPLICATE_EMAIL`  | A partner with the given email address already exists on the platform.                                                              |
| `401`  | `UNAUTHORIZED`     | Your API key is missing or invalid.                                                                                                 |
| `403`  | `FORBIDDEN`        | Your account does not have permission to create sub-partners.                                                                       |
