> For the complete documentation index, see [llms.txt](https://synaptiq-systems-1.gitbook.io/synaptiq-systems/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://synaptiq-systems-1.gitbook.io/synaptiq-systems/~/changes/GV7eJCpt5kF6deUPqR2y/api-documentation.md).

# API Documentation

#### API Documentation

**SynaptiQ Systems** provides several APIs for developers to interact with nodes, integrate LLMs, manage tasks, and enable decentralized collaboration.

***

**1. SwarmNode Class**

The **SwarmNode** class enables decentralized communication between nodes using IPFS.

**Methods**

* **send\_decentralized\_message(message)**\
  Send a message using IPFS.

  **Example:**

  ```python
  pythonCopy codenode.send_decentralized_message("Hello, world!")
  ```
* **retrieve\_decentralized\_message(ipfs\_hash)**\
  Retrieve a message from IPFS using its hash.

  **Example:**

  ```python
  pythonCopy codenode.retrieve_decentralized_message("QmHashHere")
  ```

***

**2. TaskScheduler Class**

The **TaskScheduler** class manages task distribution and assignment within the swarm.

**Methods**

* **add\_task(node\_id, task, priority)**\
  Add a task to the scheduler.

  **Example:**

  ```python
  pythonCopy codescheduler.add_task(1, "Process data", priority=5)
  ```
* **assign\_task(nodes)**\
  Assign tasks to nodes dynamically based on priority.

  **Example:**

  ```python
  pythonCopy codescheduler.assign_task(swarm.nodes)
  ```

***

**3. SwarmConsensus Class**

The **SwarmConsensus** class handles collaborative decision-making among agents.

**Methods**

* **propose\_task(task\_description)**\
  Propose a task to the swarm for consensus.

  **Example:**

  ```python
  pythonCopy codeproposal_id = swarm.propose_task("Analyze data trends")
  ```
* **vote(proposal\_id)**\
  Vote on a task proposal.

  **Example:**

  ```python
  pythonCopy codeswarm.vote(proposal_id)
  ```
* **get\_consensus()**\
  Check if consensus has been reached for a task.

  **Example:**

  ```python
  pythonCopy codeconsensus = swarm.get_consensus()
  print(consensus)
  ```

***

**4. IPFSClient Class**

The **IPFSClient** class enables decentralized storage and retrieval of data using IPFS.

**Methods**

* **upload\_file(file\_path)**\
  Upload a file to IPFS.

  **Example:**

  ```python
  pythonCopy codecid = ipfs_client.upload_file("data/task_data.json")
  print(f"Uploaded to IPFS with CID: {cid}")
  ```
* **retrieve\_file(cid, output\_path)**\
  Retrieve a file from IPFS using its CID.

  **Example:**

  ```python
  pythonCopy codeipfs_client.retrieve_file(cid, output_path="downloaded_data.json")
  ```

***

**5. Task Execution Examples**

* **Example 1: Running a Swarm Simulation**\
  Simulate a swarm with 10 nodes:

  ```python
  pythonCopy codefrom src.swarm.advanced_swarm_behavior import Swarm

  swarm = Swarm(10)
  swarm.simulate(5)
  ```
* **Example 2: Decentralized Messaging**\
  Send and retrieve messages using IPFS:

  ```python
  pythonCopy code# Send a message
  node.send_decentralized_message("Task completed successfully.")

  # Retrieve a message
  message = node.retrieve_decentralized_message("QmHashHere")
  print(f"Retrieved message: {message}")
  ```
* **Example 3: Task Scheduling**\
  Add and assign tasks dynamically:

  ```python
  pythonCopy codescheduler.add_task(1, "Optimize reinforcement learning parameters", priority=5)
  scheduler.assign_task(swarm.nodes)
  ```

***

**6. Integration Notes**

* **Environment Variables**\
  Set wallet configurations securely for blockchain integration:

  ```bash
  bashCopy codeSOLANA_WALLET_PATH=/path/to/solana-wallet.json
  ETHEREUM_WALLET_PRIVATE_KEY=your_private_key_here
  ```
* **Modular Components**\
  All components (e.g., **IPFSClient**, **SwarmConsensus**) are designed to work independently or in combination.
* **Extensibility**\
  Developers can extend core classes to customize workflows for specific use cases.

***

**Common Errors and Troubleshooting**

| **Error**                           | **Solution**                                                            |
| ----------------------------------- | ----------------------------------------------------------------------- |
| **FileNotFoundError: Wallet path**  | Ensure the `SOLANA_WALLET_PATH` variable is set correctly.              |
| **ValueError: Private key missing** | Set the `ETHEREUM_WALLET_PRIVATE_KEY` variable in your environment.     |
| **Consensus not reached**           | Increase the threshold or verify voting agents are active in the swarm. |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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://synaptiq-systems-1.gitbook.io/synaptiq-systems/~/changes/GV7eJCpt5kF6deUPqR2y/api-documentation.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.
