diff --git a/docs/Clarify Authentication Process and API Key Management.md b/docs/Clarify Authentication Process and API Key Management.md new file mode 100644 index 0000000..e195682 --- /dev/null +++ b/docs/Clarify Authentication Process and API Key Management.md @@ -0,0 +1,81 @@ + +# Authentication and API Key Management + +## Introduction + +This document outlines the authentication process for accessing the API and provides detailed instructions on obtaining, storing, and managing your API keys. Proper API key management is crucial for the security and stability of your integration. Previously, API keys were only available by contacting the founders. This process has been streamlined to provide a more scalable and efficient experience. + +## Quickstart + +### Obtaining API Keys + +1. **Account Creation:** Create an account on our platform at [link to account creation page - *replace with actual link*]. +2. **Account Verification:** Verify your email address. +3. **API Key Generation:** Log in to your account and navigate to the "API Keys" section in your profile settings. Click the "Generate New API Key" button. +4. **API Secret Generation:** Alongside the API Key, a corresponding API Secret will be generated. **Important:** The API Secret is only shown once during creation. Store it securely. If you lose your API Secret, you will need to regenerate both the API Key and API Secret. +5. **Key Storage:** Securely store both your API Key and API Secret. Refer to the "Security" section below for best practices. + +### Using API Keys + +All API requests require both the `x-api-key` and `x-api-secret` headers to be included. + +**Example Request (cURL):** + +```bash +curl -X POST \ + 'https://your-api-endpoint.com/v1/messages/individual/{accountId}/send' \ + -H 'Content-Type: application/json' \ + -H 'x-api-key: YOUR_API_KEY' \ + -H 'x-api-secret: YOUR_API_SECRET' \ + -d '{ + "content": "Hello, world!", + "attachment_uri": null, + "from": "61421868490", + "to": "61433174782", + "service": "whatsapp" + }' +``` + +**Example Request (Python):** + +```python +import requests + +url = "https://your-api-endpoint.com/v1/messages/individual/{accountId}/send" +headers = { + "Content-Type": "application/json", + "x-api-key": "YOUR_API_KEY", + "x-api-secret": "YOUR_API_SECRET" +} +data = { + "content": "Hello, world!", + "attachment_uri": None, + "from": "61421868490", + "to": "61433174782", + "service": "whatsapp" +} + +response = requests.post(url, headers=headers, json=data) + +print(response.status_code) +print(response.json()) +``` + +**Note:** Replace `YOUR_API_KEY` and `YOUR_API_SECRET` with your actual API key and secret. Also, replace `https://your-api-endpoint.com` with the actual API endpoint. Replace `{accountId}` with the appropriate account ID. + +## Security + +### Secure Storage + +* **Never hardcode API keys directly into your application code.** This is a major security risk. +* **Use environment variables:** Store API keys as environment variables on your server or development machine. This keeps them separate from your code and allows you to easily change them without modifying your application. +* **Use a secrets management system:** For production environments, consider using a dedicated secrets management system like HashiCorp Vault, AWS Secrets Manager, or Azure Key Vault. These systems provide secure storage, access control, and auditing for your API keys. +* **Avoid committing API keys to version control (e.g., Git).** Add your API key environment variables to your `.gitignore` file. +* **Encrypt API keys at rest:** If you are storing API keys in a database or other persistent storage, encrypt them using a strong encryption algorithm. + +### Environment-Specific API Keys + +It is highly recommended to use different API keys for different environments (development, staging, production). This helps to isolate your production environment and prevent accidental data corruption or security breaches. + +| Environment | API Key Prefix | Purpose ` | +| ` | dev | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` \ No newline at end of file