# API Overview

### Introduction

The OptSwap protocol is comprised of multiple Core smart contracts which together provide the functionality of Decentralized Exchanges (DEXes), Automated Market Makers (AMMs), Meta Oracles, Staking, Fundraising, Airdrops and Governance.

{% hint style="success" %}
The Core contracts provide all the fundamental safety guarantees for every user interacting with OptSwap. They define the governance rules, options trading & settlement logic, and all the interactions involving the underlying assets and cash tokens therein.
{% endhint %}

External calls will interact directly with the Core contracts using the Application Binary Interfaces (ABIs) which are provided for each of the smart contracts that is deployed. All the external calls are documented in this technical reference documentation. Internal functions and libraries are viewable on the OptSwap Github repository.

### Software Requirements

OptSwap has been developed and compiled using the following libraries or frameworks:

* Truffle
* Ganache
* Solidity
* The Graph

{% hint style="info" %}
For all smart contract interactions from an Externally Owned Account (EOA), you should be able to get by with just Web3.js; or the equivalent libraries/tools which support the Ethereum Virtual Machine (EVM) and EVM Application Binary Interfaces (ABIs) in your favorite programming language or framework.

The subgraphs can be queried with GraphQL using simple HTTPS requests and all responses are in JSON format. Therefore, it should be compatible out-of-the-box with any language or framework of your choice.
{% endhint %}

### Developer APIs

{% content-ref url="/pages/Y1Wu57HHKdv1qBoELCYK" %}
[Smart Contracts](/technical-reference/smart-contracts.md)
{% endcontent-ref %}

{% content-ref url="/pages/oseFgHegRzY8YigJgRcT" %}
[Subgraphs](/technical-reference/subgraphs.md)
{% endcontent-ref %}

{% content-ref url="/pages/4xTr98EFgHcSlZCYM4AI" %}
[REST API](/technical-reference/rest-api.md)
{% endcontent-ref %}


---

# 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.optswap.org/technical-reference/api-overview.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.
