# Subaccounts

{% hint style="danger" %}
**The Endpoint is in Alpha**
{% endhint %}

Subaccounts are a way to create and manage user accounts under a master account. They can be interacted with using the master account's API key.

* **Subaccount:**
  * A subaccount is specified via the `userId` field in the request body or request query, serving as another part of the apiKey.
  * The master account can interact with subaccount payment methods and transactions.
  * The master account cannot interact with subaccounts of a subaccount.
  * Each subaccount can only have one master account.

## Subaccounts API Endpoints

## Post Subaccount

<mark style="color:green;">`POST`</mark> `https://api.abyiss.com/v2/octane/subaccounts`

Returns a 201 status code upon successful query. Then returns the successful account created.

#### Headers

| Name                                     | Type   | Description   |
| ---------------------------------------- | ------ | ------------- |
| apiKey<mark style="color:red;">\*</mark> | string | Blockchain ID |

#### Request Body

| Name                                    | Type   | Description                              |
| --------------------------------------- | ------ | ---------------------------------------- |
| name<mark style="color:red;">\*</mark>  | string | User name including first and last name. |
| email<mark style="color:red;">\*</mark> | string | The users email address.                 |

{% tabs %}
{% tab title="201: Created Success" %}

```json
{
    "newSubAccountId": "usr-123456790"
}
```

{% endtab %}

{% tab title="401: Unauthorized Unauthorized -- Invalid API Key" %}

```json
{
    "Unauthorized": "Invaild API Key"
}
```

{% endtab %}
{% endtabs %}

## Get Subaccounts

<mark style="color:blue;">`GET`</mark> `https://api.abyiss.com/v2/octane/subaccounts`

Returns an array of all the accounts for an associated `apiKey`.

#### Headers

| Name                                     | Type   | Description         |
| ---------------------------------------- | ------ | ------------------- |
| apiKey<mark style="color:red;">\*</mark> | string | Your Abyiss API Key |

{% tabs %}
{% tab title="200: OK Success" %}

```json
[{
  "id": "usr-123456790",
  "email": "test@account.com",
  "name": "subAccountName",
  "createdAt": "2023-12-10T00:46:14.786",
  "updatedAt": "2023-12-10T00:46:14.783"
},{
  "id": "usr-123457800",
  "email": "zeekdonuts@gmail.com",
  "name": "Zeek Zubert",
  "createdAt": "2023-12-10T02:18:32.022",
  "updatedAt": "2023-12-10T02:18:32.018"
}]
```

{% endtab %}

{% tab title="401: Unauthorized Unauthorized -- Invalid API Key" %}

```json
{
    "Unauthorized": "Invaild API Key"
}
```

{% endtab %}
{% endtabs %}

## Get Subaccount by ID

<mark style="color:blue;">`GET`</mark> `https://api.abyiss.com/v2/octane/subaccounts/{accountId}`

Returns an object for the `accountId`for an associated `apiKey`.

#### Query Parameters

| Name                                        | Type   | Description |
| ------------------------------------------- | ------ | ----------- |
| accountId<mark style="color:red;">\*</mark> | string | Order ID    |

#### Headers

| Name                                     | Type   | Description         |
| ---------------------------------------- | ------ | ------------------- |
| apiKey<mark style="color:red;">\*</mark> | string | Your Abyiss API Key |

{% tabs %}
{% tab title="200: OK Success" %}

```json
{
  "id": "usr-123456790",
  "email": "test@account.com",
  "name": "subAccountName",
  "createdAt": "2023-12-10T00:46:14.786",
  "updatedAt": "2023-12-10T00:46:14.783"
}
```

{% endtab %}

{% tab title="401: Unauthorized Unauthorized -- Invalid API Key" %}

```json
{
    "Unauthorized": "Invaild API Key"
}
```

{% endtab %}
{% endtabs %}

## **Copy & Paste Code**

**POST Subaccounts**

{% tabs %}
{% tab title="Curl" %}

```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "api-key": "dev-api-key",
    "subAccount": {
      "name": "Zeek Zubert",
      "email": "zeekdonuts@gmail.com"
    }
  }' \
  https://api.abyiss.com/v2/octane/subaccounts
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

url = "https://api.abyiss.com/v2/octane/subaccounts"
headers = {
    "Content-Type": "application/json"
}

subaccount_data = {
    "api-key": "dev-api-key",
    "subAccount": {
        "name": "Zeek Zubert",
        "email": "zeekdonuts@gmail.com"
    }
}

response = requests.post(url, headers=headers, data=json.dumps(subaccount_data))

print(response.status_code)
print(response.json())
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');

const url = 'https://api.abyiss.com/v2/octane/subaccounts';
const headers = {
    'Content-Type': 'application/json'
};

const subaccountData = {
    'api-key': 'dev-api-key',
    'subAccount': {
        'name': 'Zeek Zubert',
        'email': 'zeekdonuts@gmail.com'
    }
};

axios.post(url, subaccountData, { headers })
    .then(response => {
        console.log(response.status);
        console.log(response.data);
    })
    .catch(error => {
        console.error(error.response.status);
        console.error(error.response.data);
    });
```

{% endtab %}
{% endtabs %}

**GET Subaccounts**

{% tabs %}
{% tab title="Curl" %}

```bash
curl "https://api.abyiss.com/v2/octane/subaccounts?apiKey=YOUR_API_KEY_HERE"
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

url = 'https://api.abyiss.com/v2/octane/subaccounts?apiKey=YOUR_API_KEY_HERE'

response = requests.get(url)

print(response.status_code)  # This will print the status code of the response
print(response.json())  # This will print the response content as JSON
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
const url = 'https://api.abyiss.com/v2/octane/subaccounts?apiKey=YOUR_API_KEY_HERE';

fetch(url)
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return response.json();
  })
  .then(data => {
    console.log(data); // Handle the response data
  })
  .catch(error => {
    console.error('There has been a problem with your fetch operation:', error);
  });
```

{% endtab %}
{% endtabs %}

## Subaccounts **Response Object**

{% tabs %}
{% tab title="POST Subaccounts" %}
Example URL: <https://api.abyiss.com/v2/octane/subaccounts?apiKey=>

```json
{
    "newSubAccountId": "usr-123456790"
}
```

{% endtab %}

{% tab title="Get Subaccounts" %}
Example URL: <https://api.abyiss.com/v2/octane/subaccounts?apiKey=>

```json
[{
  "id": "usr-123456790",
  "email": "test@account.com",
  "name": "subAccountName",
  "createdAt": "2023-12-10T00:46:14.786",
  "updatedAt": "2023-12-10T00:46:14.783"
},{
  "id": "usr-123457800",
  "email": "zeekdonuts@gmail.com",
  "name": "Zeek Zubert",
  "createdAt": "2023-12-10T02:18:32.022",
  "updatedAt": "2023-12-10T02:18:32.018"
}]
```

{% endtab %}

{% tab title="Get Subaccount by Id" %}
Example URL: <https://api.abyiss.com/v2/octane/subaccounts/usr-123457800?apiKey=>

```json
{
  "id": "usr-123457800",
  "email": "zeekdonuts@gmail.com",
  "name": "Zeek Zubert",
  "createdAt": "2023-12-10T02:18:32.022",
  "updatedAt": "2023-12-10T02:18:32.018"
}
```

{% endtab %}
{% endtabs %}

## Subaccounts Response Attributes

| Attribute Name | Data Type | Description                                         |
| -------------- | --------- | --------------------------------------------------- |
| id             | string    | Unique user id.                                     |
| email          | string    | User email address.                                 |
| name           | string    | User first and last name.                           |
| createdAt      | string    | The timestamp the user account was created.         |
| updatedAt      | string    | The last timestamp the user account was updated at. |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.abyiss.com/octane-api/apis/subaccounts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
