> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.coperniq.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.coperniq.io/_mcp/server.

# Get API Key

POST https://api.coperniq.io/v1/api-keys

Obtain an API key using Basic Authentication. This key will be used for all other API requests.

For a user belonging to multiple companies, pass `company_id` to select which company the new key
belongs to. If omitted, the company is chosen deterministically: the user's first non-collaborator
company, or otherwise their first company.

Your company ID can be found in the URL after logging in to the Coperniq UI: `https://app.coperniq.io/{company_id}/inbox`.

Reference: https://docs.coperniq.io/api-key/get-api-key

## Authentication

- `Authorization` header (basic auth, required) — Basic authentication of the form `Basic <base64(username:password)>`.

## Request

### Query parameters

- `company_id` (integer, optional) — ID of the company the new API key should belong to. Required only when the authenticated user belongs to more than one company and the default (first non-collaborator company) is not the desired one. The user must belong to the given company. Your company ID can be found in the URL after logging in to the Coperniq UI: `https://app.coperniq.io/{company_id}/inbox`.

## Response

### 200

API key generated successfully

- `token` (string, optional) — API key (token) for authenticating future requests
- `companyId` (integer, optional) — Company identifier
- `description` (string, optional) — Description of the API key
- `name` (string, optional) — Name of the API key
- `email` (string, optional) — Email address of the user who created the API key
- `id` (integer, optional) — API user identifier

## Errors

### 400 Bad Request Error

company_id was malformed (not a positive integer)

- `message` (string, optional)

### 401 Unauthorized Error

Authentication credentials are missing or invalid

- `error` (string, optional)

### 403 Forbidden Error

User does not have access to the requested company

- `message` (string, optional)

## Examples

**Response**

```json
{
  "token": "string",
  "companyId": 1,
  "description": "string",
  "name": "string",
  "email": "string",
  "id": 1
}
```

**SDK Code**

```python
import requests

url = "https://api.coperniq.io/v1/api-keys"

response = requests.post(url, auth=("<username>", "<password>"))

print(response.json())
```

```javascript
const url = 'https://api.coperniq.io/v1/api-keys';
const credentials = btoa("<username>:<password>");

const options = {method: 'POST', headers: {Authorization: `Basic ${credentials}`}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.coperniq.io/v1/api-keys"

	req, _ := http.NewRequest("POST", url, nil)

	req.SetBasicAuth("<username>", "<password>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.coperniq.io/v1/api-keys")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request.basic_auth("<username>", "<password>")

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.coperniq.io/v1/api-keys")
  .basicAuth("<username>", "<password>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.coperniq.io/v1/api-keys', [
  'headers' => [
  ],
    'auth' => ['<username>', '<password>'],
]);

echo $response->getBody();
```

```csharp
using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://api.coperniq.io/v1/api-keys");
client.Authenticator = new HttpBasicAuthenticator("<username>", "<password>");
var request = new RestRequest(Method.POST);

IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let credentials = Data("<username>:<password>".utf8).base64EncodedString()

let headers = ["Authorization": "Basic \(credentials)"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.coperniq.io/v1/api-keys")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```