# OpenAPI

### **Open API Documentation for Chroom**

The Chroom Open API provides developers with a flexible and powerful set of tools to integrate real-time communication features into their applications. Built on WebRTC and a decentralized infrastructure, the API is designed for seamless integration, scalability, and high performance. Below is a detailed guide on how to leverage the Chroom API for various use cases.

### **1. Introduction to Chroom API**

The Chroom API is a RESTful interface designed for developers to access and control the decentralized RTC network. It enables applications to initiate meetings, manage media streams, and interact with the Chroom blockchain layer.

**Key Benefits:**

* Decentralized architecture for robust and secure operations.
* Real-time audio, video, and data streaming.
* Blockchain-backed transparency for data and transactions.

### **2. Key Features**

* **Meeting Management:** Start, join, and manage meetings programmatically.
* **Resource Allocation:** Control media nodes for optimized performance.
* **Analytics:** Access real-time metrics on Quality of Service (QoS), bandwidth usage, and node health.
* **Token Economy:** Interact with the token for rewards, payments, and governance.
* **Security:** End-to-end encryption for data streams and secure API calls.

### **3. Authentication and Security**

**API Key Authentication**

To access the API, developers must generate an API key via the Chroom dashboard. Each request must include this key in the headers:

```json
Authorization: Bearer <API_KEY>
```

**OAuth 2.0 Support**

For advanced integrations, the Chroom API supports OAuth 2.0 for secure and scalable authentication.

**Security Measures**

* Encrypted communication using HTTPS.
* Rate limiting to prevent abuse.
* Tokenized access control for granular permissions.

### **4. Core Endpoints**

**Meetings Management**

**Endpoint:** `/api/meetings`

* **POST** `/create`: Create a new meeting.\
  **Parameters:**

  * `title`: String (Meeting title)
  * `host`: String (Host ID)
  * `participants`: Array (List of participant IDs)
  * `duration`: Integer (Duration in minutes)

  <pre class="language-json"><code class="lang-json">{
  <strong>  "meeting_id": "abc123",
  </strong>  "status": "created",
    "start_url": "https://chroom/start/abc123",
    "join_url": "https://chroom/join/abc123"
  }
  </code></pre>

### **5. Use Cases**

1. **Educational Platforms:** Embed Chroom API to enable live classes with low latency and interactive features like screen sharing.
2. **Gaming:** Use real-time audio and video for multiplayer gaming communication.
3. **Telemedicine:** Securely conduct remote consultations with HIPAA-compliant video streams.
4. **Corporate Tools:** Integrate decentralized meetings into project management systems for enhanced collaboration.

### **6. Developer Guidelines**

**Rate Limits**

* **Standard Tier:** 100 requests per minute.
* **Premium Tier:** 1,000 requests per minute.

**Error Handling**

The Chroom API uses standard HTTP status codes:

* `200 OK`: Request succeeded.
* `400 Bad Request`: Validation error.
* `401 Unauthorized`: Invalid API key or token.
* `500 Internal Server Error`: Unexpected error on the server.

**Best Practices**

* Cache non-sensitive data to reduce API calls.
* Use pagination for endpoints returning large datasets.
* Secure API keys in environment variables.


---

# 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://chroom1.gitbook.io/chroom/user-guide/openapi.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.
