--- title: API SQL OPTIONS | Datasquirel docs description: Execute a raw SQL query via the Datasquirel API page_title: SQL OPTIONS page_description: Execute any valid MariaDB SQL statement and receive results as JSON. --- ## Overview The SQL OPTIONS endpoint accepts any valid MariaDB SQL string and executes it against your database. Results are returned as a JSON array. ## npm Package ```javascript import datasquirel from "@moduletrace/datasquirel"; const result = await datasquirel.api.sql({ key: process.env.DATASQUIREL_API_KEY, params: { query: "SELECT posts.id, posts.title, users.name AS author FROM posts JOIN users ON posts.user_id = users.id WHERE posts.is_published = 1 ORDER BY posts.created_at DESC LIMIT 20", }, }); console.log(result.payload); ``` ### Aggregation Query ```javascript const result = await datasquirel.api.sql({ key: process.env.DATASQUIREL_API_KEY, params: { query: "SELECT category, COUNT(*) AS total FROM posts GROUP BY category ORDER BY total DESC", }, }); ``` ## Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `key` | `string` | Yes | Full Access API key | | `params.query` | `string` | Yes | The raw MariaDB SQL string to execute | ## REST API ``` POST /api/v1/sql ``` **Headers:** ``` Authorization: Bearer YOUR_API_KEY Content-Type: application/json ``` **Body:** ```json { "query": "SELECT * FROM users WHERE is_active = 1 LIMIT 10" } ``` ## Response ```json { "success": true, "payload": [ { "id": 1, "name": "Alice", "email": "alice@example.com" }, { "id": 2, "name": "Bob", "email": "bob@example.com" } ] } ``` ## Notes - A **Full Access** API key is required. - All valid MariaDB statements are supported: SELECT, INSERT, UPDATE, DELETE, ALTER, CREATE, DROP, and more. - Be careful with DDL statements (ALTER, DROP) — they modify the table structure and cannot be undone. - Parameterized queries are not supported through this endpoint — sanitize user input before embedding it in a SQL string.