# API Maker Documentation > API Maker is the backend engine for the AI era : a self-hosted engine that connects to your databases (MongoDB, MySQL, MariaDB, PostgreSQL, SQL Server, Oracle, TiDB, Percona XtraDB) and gives every table secure REST APIs at once. You, or your AI assistant, add the business logic in custom APIs, hooks, schedulers and events, in TypeScript, Python, PHP, C#, Go, Rust, Java or Kotlin. Every API is locked by default and the code is checked for data leaks ; caching, access control, logging, monitoring and Git deployment are built in. It runs on your own servers. - Every page of this documentation exists as Markdown at the same URL with .md instead of .html (the links below). - The whole documentation in one file, the code in TypeScript only : https://docs.apimaker.dev/llms-full.txt - One file per part : Getting started https://docs.apimaker.dev/llms-getting-started.txt · Security https://docs.apimaker.dev/llms-security.txt · Build https://docs.apimaker.dev/llms-build.txt · Operate https://docs.apimaker.dev/llms-operate.txt · Code examples https://docs.apimaker.dev/llms-code-examples.txt · Benchmarks https://docs.apimaker.dev/llms-benchmarks.txt · Release notes https://docs.apimaker.dev/llms-release-notes.txt - The website and its feature pages : https://apimaker.dev/llms.txt - Made by SAVA Info Systems. Contact : contact@apimaker.dev ## Getting started - [API Maker Documentation](https://docs.apimaker.dev/index.md): Learn API Maker step by step - install it, connect a database, get REST APIs for every table, add your own logic in TypeScript, Python, Go, Rust and more, secure it with tokens and groups, and deploy with Git. - [How API Maker Works](https://docs.apimaker.dev/v4/docs/getting-started/how-it-works.md): The moving parts of API Maker in one page - the life of a request, the API families on one base URL, the two tokens and the two gates, where your code runs in any of its languages, and what the servers look like. - [Install API Maker on a Server](https://docs.apimaker.dev/v4/docs/getting-started/install-on-server.md): Put API Maker v4 on your own Ubuntu server with one command - one program for the APIs, the WebSockets and the admin panel, MongoDB and Redis in Docker, Caddy with HTTPS. The flags, what it asks and does, upgrades and rollbacks, a second server, the files, and the manual setup. - [Install API Maker by Hand](https://docs.apimaker.dev/v4/docs/getting-started/install-by-hand.md): Set up API Maker v4 on Ubuntu piece by piece, the way the install script does - the program, Docker, the network limits for many connections, MongoDB as a replica set, Redis, and the systemd service. - [Run API Maker on Your Computer](https://docs.apimaker.dev/v4/docs/getting-started/local-run.md): API Maker Launchpad is a desktop app for macOS, Windows and Linux which runs API Maker and its databases in Docker on your machine, adds databases in a few clicks, syncs your code with your editor, and can install API Maker on your own servers in its Cloud mode. - [Upgrade from API Maker v3](https://docs.apimaker.dev/v4/docs/getting-started/upgrade-from-v3.md): Move a server of API Maker v3 (the Node.js edition) to v4 - with the V3 to V4 Migration page of API Maker Launchpad, which rolls back on failure, or with the install script - what stays, what changes for your code, and what to check after. - [Your First API in 10 Minutes](https://docs.apimaker.dev/v4/docs/getting-started/first-api.md): A hands-on start with the sample shop every new API Maker account has - connect MongoDB, get a token, save a category and a product through the schema APIs, read them back with filters and deep populate, see a validation error, and check the account with the security report. - [API Maker Cheat Sheet](https://docs.apimaker.dev/v4/docs/cheat-sheet.md): The URLs, headers, query params, schema options and g object of API Maker on one page - keep it next to your editor. - [API Maker Docs for AI Assistants](https://docs.apimaker.dev/v4/docs/ai/llms.md): How to give ChatGPT, Claude, Cursor, Copilot or any agent the API Maker documentation - llms.txt and llms-full.txt, the Markdown twin of every page, the AGENTS.md API Maker writes into your repository, and the security report an assistant can act on. ## Security - [Security Overview](https://docs.apimaker.dev/v4/docs/security/overview.md): How API Maker keeps your data safe - every API locked by default, the API gate and the row gate, what is enforced where, the trust model of the sandboxes, what the licence check sends, and the checklist before you go live. - [Before You Go Live](https://docs.apimaker.dev/v4/docs/security/go-live.md): The checklist before an API Maker server takes real users - default passwords, the default API user and group, the row gate, public APIs, HTTPS, the licence key, backups and the sandboxes. - [APIs Security Report & Actions](https://docs.apimaker.dev/v4/docs/apis-security/api-security-report.md): Scan an API Maker account for data leaks (unscoped collections, wide groups, weak auth providers, public APIs, leaks in the code itself in all eight languages), fix them with one click after seeing the change, or skip them with a reason, and keep the report in git for people and AI assistants. - [Security Report Reference](https://docs.apimaker.dev/v4/docs/apis-security/api-security-report-reference.md): Every check of the APIs Security Report of API Maker - how a pre hook is read in every language, what the report finds in groups, auth providers and public APIs, and the rules of the code scan with their severity and fix. - [Handle Role Based Permissions](https://docs.apimaker.dev/v4/docs/authorization/handle-role-based-permissions.md): Model every checkbox of your role screen as one small API Maker group, store group names in your own users table, and scope rows with a database level pre-hook. - [API Group Permissions](https://docs.apimaker.dev/v4/docs/apis-security/api-group-permission.md): Groups are the permission unit of API Maker - which tables, APIs and fields, which custom and system APIs, which WebSocket events - given to API users and named in the groups column of your own users. - [API User Permissions](https://docs.apimaker.dev/v4/docs/apis-security/api-user-permission.md): An API user is the identity of an application which calls API Maker - its token goes in x-am-authorization, its groups decide the APIs reachable, its password can live in the secret, and it can publish Swagger docs of its APIs. ### Sign-in - [Sign-in Providers](https://docs.apimaker.dev/v4/docs/authorization/sign-in-providers.md): Let people sign in to your app with Google, Azure AD (Microsoft Entra ID), AWS Cognito, your own users table or a system of your own - API Maker checks their token, finds the person in a table of yours and runs the call with their groups. - [Auth of a Database User](https://docs.apimaker.dev/v4/docs/authorization/AMDB.md): Sign the people of your own users table in with API Maker - a DB auth provider names the table and its columns, the token API gives the person a token, x-am-user-authorization carries it, and the groups column decides what the person may call. - [Auth of an API User](https://docs.apimaker.dev/v4/docs/authorization/AMApiUser.md): The first gate of every call - the token of an API user in x-am-authorization, how to get and refresh it, and what g.req.auth.authAMUser gives your code. - [Secrets](https://docs.apimaker.dev/v4/docs/secrets/secrets.md): The secret of an API Maker account - hashing and encryption keys, the transfer key shared with apps, API user passwords, connection strings, default auth providers, multi-tenant entries - a TypeScript object kept encrypted on the server and never in Git. - [Security Features](https://docs.apimaker.dev/v4/docs/features/security-features.md): A security report of your account, encrypted payloads with a replay window, allowed origins, two-factor sign-in for the admin panel, and audits of the npm packages of your sandboxes and of the crates API Maker is built from. ## Build - [All APIs at a Glance](https://docs.apimaker.dev/v4/docs/apis-all/overview.md): Every API of API Maker on one page - the operations of a table under /api/schema and /api/gen (17 on MongoDB, 14 on SQL tables) with their method and URL, the custom and system APIs, the query params and headers they share, and how to call them from your code. ### Request and response - [Response Format](https://docs.apimaker.dev/v4/docs/apis-all/response-format.md): What every API Maker API answers - the envelope with success, statusCode, data, totalCount, errors, warnings, logs and meta, the HTTP status codes, and how headers change the shape and the format of the reply. - [Request Headers](https://docs.apimaker.dev/v4/docs/apis-all/header/requestHeader.md): Every request header API Maker understands - the tokens, the case and format of the response, flat objects, metadata, caching, encryption of the payload and the reply, the language of the messages, the tenant, the sandbox and compression - with an example of each. - [Error Messages Reference](https://docs.apimaker.dev/v4/docs/apis-all/error-codes.md): Every message template of API Maker (AM_00001 to AM_00125) with its meaning, what triggers it and how to fix it - validation, deep populate, tokens, secrets, encryption, multi-tenant, files and more. Each one can be translated per caller with internationalization. ### Query params - [Query Parameters](https://docs.apimaker.dev/v4/docs/apis-all/query-params/query-params.md): The query params every read API of API Maker understands - find, skip, limit, sort, select, deep and getTotalCount, any column as a filter, upsert and returnDocument for updates - with examples, and the same keys in the body of the query APIs. - [find Parameter](https://docs.apimaker.dev/v4/docs/apis-all/query-params/find.md): Filter rows with the find parameter of API Maker - every query operator of MongoDB ($eq, $in, $and, $or, $nor, $not, $exists, $regex, $mod, $expr, $elemMatch...), translated to SQL for MySQL, MariaDB, PostgreSQL, SQL Server and Oracle, and find and join on fields of related tables. - [select Parameter](https://docs.apimaker.dev/v4/docs/apis-all/query-params/select.md): Choose the fields of an answer with the select parameter of API Maker - a list of columns to keep, or a list to leave out with a minus sign, on reads and on the answers of writes, with $slice and $elemMatch for the arrays of MongoDB. - [deep Parameter (Deep Populate)](https://docs.apimaker.dev/v4/docs/apis-all/query-params/deep.md): Replace ids with the rows they point to with the deep parameter of API Maker - from any table, database or instance, several levels deep, with a filter, a sort, a limit and a selection per level, one query per deep item. ### Database APIs - [Get All API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-get-all-api.md): Read the rows of a table with the get all API of API Maker - filter with find or any column, page with skip and limit, sort, select fields, populate related rows with deep, and get the total count. - [Get All by Stream API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-get-all-by-stream-api.md): Stream the rows of a table with the get all by stream API of API Maker - the same filters as get all, sent as they are read, for exports and large result sets without holding everything in memory. - [Get by ID API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-get-by-id-api.md): Read one row by its primary key with the get by id API of API Maker, or by any other column with the primaryKey param, with select and deep populate. - [Save Single or Multiple API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-save-single-or-multiple-api.md): Insert one row or many with the save single or multiple API of API Maker - one object or an array in the body, generated ids, and select or deep on the answer. - [Master Save API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-master-save-api.md): Save or update a tree of related objects in one call with the master save API of API Maker - each object is inserted or updated by its primary key, nested objects go to their own tables, arrays fill one-to-many relations, and a failure reverts everything. - [Array Operations API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-array-operations-api.md): Push, add to set, pull, pull all, pop and set elements of array fields in MongoDB documents with the array operations API of API Maker, several operations in one call. - [Update by ID API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-update-by-id-api.md): Change some fields of one row with the update by id API of API Maker - by primary key or any column, with upsert, returnDocument, select and deep, and the version check of optimistic concurrency control. - [Update Many API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-update-many-api.md): Change every row matching a filter in one statement with the update many API of API Maker - a find and an updateData in the body, the count of changed rows in the answer. - [Replace by ID API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-replace-by-id-api.md): Replace a whole MongoDB document with the replace by id API of API Maker - by primary key or any column, with upsert, returnDocument, select and deep. - [Remove by ID API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-remove-by-id-api.md): Delete one row by its primary key or any column with the remove by id API of API Maker, and get the removed row back, with select and deep. - [Query for Get Data API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-query-for-get-data-api.md): Read rows with a JSON query in the body with the query API of API Maker - find with operators, find and join across tables, select, sort, paging, deep populate and total count. - [Query for Get Data by Stream API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-query-for-get-data-by-stream-api.md): Stream the rows of a JSON query with the query by stream API of API Maker - the body of the query API, the answer of get all by stream, for exports and big result sets. - [Remove by Query API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-remove-by-query-api.md): Delete every row matching a filter with the remove by query API of API Maker - a find in the body, the removed rows, their count and their ids in the answer. - [Aggregate API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-aggregate-api.md): Run a MongoDB aggregation pipeline through the schema aggregate API of API Maker - $match, $group, $project, $addFields, $bucket, $facet, $lookup, $count and the other stages, with the permissions of the caller. - [Count API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-count-api.md): Count the rows matching a filter with the count API of API Maker - a find in the body, a number in the answer, on every database. - [Distinct API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-distinct-api.md): List the distinct values of one or several columns with the distinct API of API Maker - fields and their order in the path, an optional find filter, on every database. - [Distinct with Query API](https://docs.apimaker.dev/v4/docs/apis-all/schema-apis/auto-generated-schema-based-distinct-with-query-api.md): List the distinct values of columns for the rows matching a find in the body with the distinct with query API of API Maker. ### Custom APIs - [Custom APIs](https://docs.apimaker.dev/v4/docs/apis-all/custom-apis/user-created-custom-api.md): Write a function in API Maker, in TypeScript, Python, PHP, C#, Go, Rust, Java or Kotlin, and it is live as an API - path and method, settings for caching, access, validation, files and timeouts, the global object g to reach your databases, file uploads and downloads, any content type, hooks, versions and tests. - [Custom API Settings](https://docs.apimaker.dev/v4/docs/settings/customApiSettings.md): The Basic Info of a custom API in API Maker - name, path and method, access type and auth providers, caching with reset rules, request schemas, timeout, native process, error list, file upload rules and Swagger docs. ### Hooks - [Pre Hooks](https://docs.apimaker.dev/v4/docs/apis-all/hooks/preHook-api.md): Run your code (TypeScript, Python, PHP, C#, Go, Rust, Java or Kotlin) before any API of API Maker - at the level of an instance, a database, a table, one API, a custom or system API, or a group - to check, change, narrow or answer a request, in the order API Maker runs them. - [Post Hooks](https://docs.apimaker.dev/v4/docs/apis-all/hooks/postHook-api.md): Run your code (TypeScript, Python, PHP, C#, Go, Rust, Java or Kotlin) after any API of API Maker - reshape the answer in g.res.output, notify, log, or replace it - at the level of an instance, a database, a table, one API or a custom or system API, in the reverse order of the pre hooks. ### System APIs - [Encrypt Data API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-encrypt-data-api.md): Encrypt any value with the encrypt data system API of API Maker, using the transfer key of your secret or a key of your own, and get a string a client or a later call can decrypt. - [Decrypt Data API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-decrypt-data-api.md): Decrypt a string made by the encrypt data API, or by a client with the transfer key of your secret, with the decrypt data system API of API Maker. - [Hash Data API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-hash-data-api.md): Hash a value with the hash data system API of API Maker - HMAC SHA-256 with the nonce or secret of your secret, the same hash the hashing conversion of a schema stores, so you can look a hashed column up. - [Get Token API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-token-api.md): Get the token of an API user or of a person from API Maker with the token API - username and password, or the name of a token generator, refresh tokens, several tokens in one call, and tenant tokens. - [Call External API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-call-external-api.md): Call any HTTP API from API Maker with the call external API system API - JSON, forms, file uploads, SOAP and XML, bytes, with basic, bearer, API key and OAuth 2 authentication, redirects, retries, file downloads, and lists of calls in parallel or in sequence. - [Execute Plain Query API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-execute-plain-query-api.md): Run a SQL statement or a MongoDB command on any instance of the account with the execute plain query system API of API Maker - DDL, DML, joins, stored procedures, database commands - with the permissions of the caller. - [Get Secret API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-get-secret-by-name-api.md): Read one or several keys of a secret by their path with the get secret system API of API Maker - connection strings, API keys of external services, your own keys - from the default secret or a named one. - [Get Redis Key API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-get-redis-key-api.md): Read one or several keys of your own from the Redis of API Maker with the get redis key system API - values set with set redis key, in the namespace of your account. - [Set Redis Key API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-set-redis-key-api.md): Store one or several keys of your own in the Redis of API Maker with the set redis key system API - a value, a TTL in seconds, and NX to write only when the key is new. - [Remove Redis Key API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-remove-redis-key-api.md): Delete one or several keys of your own from the Redis of API Maker with the remove redis key system API - sessions, captchas, temporary data - a missing key is not an error. - [Reset Database Cache API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-reset-redis-cache-db-api.md): Drop the cached answers of the APIs of a table, a database or an instance with the reset database cache system API of API Maker, for one tenant or all of them. - [Reset Custom API Cache API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-reset-redis-cache-custom-api.md): Drop the cached answers of one or several custom APIs with the reset custom API cache system API of API Maker, for one tenant or all of them. - [Reset System API Cache API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-reset-redis-cache-system-api.md): Drop the cached answers of one or several system APIs with the reset system API cache system API of API Maker, for one tenant or all of them. - [Get Table Meta API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-get-table-meta-api.md): Read the columns of a table or the fields of a collection in one common format with the get table meta system API of API Maker - names, types, counts - on every database, for migrations and dynamic code. - [Create Indexes API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-create-indexes-api.md): Create indexes on any database of the account with one system API of API Maker - the same request for MongoDB, MySQL, MariaDB, SQL Server, PostgreSQL and Oracle, safe to run again and again. - [Drop Indexes API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-drop-indexes-api.md): Drop indexes by name on any database of the account with one system API of API Maker - a missing index is reported, not an error, so the call can run again. - [Get Indexes API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-get-indexes-api.md): List the indexes of a table on any database of the account in one common format with the get indexes system API of API Maker - name, key fields with their order, unique or not. - [Emit Event API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-emit-event-api.md): Emit one or several events of API Maker over HTTP with the emit event system API - the event data reaches the listeners, and their outputs come back. - [Emit WebSocket Event API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-emit-event-ws-api.md): Push a notification to the WebSocket clients subscribed to a custom event of API Maker with the emit event WS system API, from any server or any code. - [Is Valid Data for Table API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-is-valid-data-for-table-api.md): Check data against the schema of a table without saving it with the is valid data for table system API of API Maker - the same conversions and validations as a save or an update, the errors as the answer. - [Is Valid Data for Custom API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-is-valid-data-for-custom-api.md): Check a body or query params against the request schema of a custom API without calling it, with the is valid data for custom API system API of API Maker. - [Multi Tenant Instance Updated API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-multi-tenant-instance-updated-api.md): Drop the connection pools of a tenant on every API Maker server after its connection string changed, with the multi tenant instance updated system API, so its next request uses the new database. - [Is Valid Connection String API](https://docs.apimaker.dev/v4/docs/apis-all/system-apis/system-generated-is-valid-connection-string-api.md): Test a database connection string before saving it with the is valid connection string system API of API Maker - MongoDB, MySQL, MariaDB, SQL Server, PostgreSQL and Oracle - the check behind the Test Instance button. ### Events and WebSockets - [Events and Listeners](https://docs.apimaker.dev/v4/docs/apis-all/events/user-created-events-api.md): Events in API Maker - named events with any number of listeners in TypeScript, Python, PHP, C#, Go, Rust, Java or Kotlin, emitted from your code, from the emit-event system API or automatically after an API hit, with the outputs of the listeners returned and infinite chains stopped. - [WebSocket Events](https://docs.apimaker.dev/v4/docs/pages/web-socket-event-page.md): Push live updates to web and mobile apps with API Maker - connect a WebSocket with the tokens, subscribe to the answers of tables, custom and system APIs or to your own events with a condition, and emit from your code with emitEventWS. ### Schedulers - [Schedulers](https://docs.apimaker.dev/v4/docs/apis-all/schedulers/user-created-schedulers-api.md): Run code on a schedule in API Maker, in TypeScript, Python, PHP, C#, Go, Rust, Java or Kotlin - intervals from every second to every year or a cron expression, a time zone per interval, one run per cluster spread over the servers with failover, a timeout, versions, and start, stop or run now from the admin panel. ### Your code - [The Global Object g](https://docs.apimaker.dev/v4/docs/pre-defined-terms/global-object-g.md): Everything your code gets in API Maker through g - the request (headers, params, query, body, auth, event data), the response (status, content type, output, headers, errors), g.sys for the database, system and cache APIs, the logger and the shared space. - [Utility Classes](https://docs.apimaker.dev/v4/docs/utility-class/utility-class.md): Share code between all your code in API Maker with utility classes - written in TypeScript, Python, PHP, C#, Go, Rust, Java or Kotlin, imported the way each language imports, in custom APIs, hooks, events, schedulers, migrations and test cases, with interfaces, versions and Git. - [Process Initializers](https://docs.apimaker.dev/v4/docs/features/process-initializers.md): Code which runs when a sandbox process of your account starts, before any API - subscribe to MQTT or Redis, warm a cache, prepare a client - with the same g as a custom API. - [Test Cases Feature](https://docs.apimaker.dev/v4/docs/test-cases/test-cases.md): Write, run and debug test cases for custom APIs and utility classes in API Maker - in TypeScript, Python, PHP, C#, Go, Rust, Java or Kotlin - with mocks, a run from the terminal (npm run test) and the code coverage of every run, in every language, in VS Code and WebStorm. - [Developer Tools](https://docs.apimaker.dev/v4/docs/features/developer-tools.md): Swagger docs per API user, TypeScript interfaces from your schemas, client code in 21 languages, a debugger for sandbox code, code search and editing in your own editor. - [Browsers in Custom APIs - Playwright and Puppeteer](https://docs.apimaker.dev/v4/docs/guides/browser-automation.md): Run a headless Chromium from API Maker custom APIs to make PDFs, take screenshots or read web pages - Playwright inside a sandbox of its own with a Dockerfile which installs Chromium, or Playwright and Puppeteer on the native process. ### Languages and runtimes - [Languages and Runtimes](https://docs.apimaker.dev/v4/docs/languages/index.md): Write custom APIs, hooks, schedulers and event listeners of API Maker in TypeScript (Node.js or Bun), Python, PHP, C#, Go, Rust, Java or Kotlin. How code runs, which runtime and version it gets, its packages and how to choose a language. - [TypeScript and JavaScript](https://docs.apimaker.dev/v4/docs/languages/typescript.md): Write custom APIs, hooks, schedulers and event listeners of API Maker in TypeScript, run by Node.js or Bun. async function main(g), g.req, g.res, g.sys.db, utility classes, npm packages, with many examples. - [Python](https://docs.apimaker.dev/v4/docs/languages/python.md): Write custom APIs, hooks, schedulers and event listeners of API Maker in Python. main(g) as a function or a coroutine, g.req, g.res, g.sys.db, g.sys.system, g.sys.cache, the logger, errors, packages from PyPI, with many examples. - [PHP](https://docs.apimaker.dev/v4/docs/languages/php.md): Write custom APIs, hooks, schedulers and event listeners of API Maker in PHP 8.3 or later. function main(AmG $g), $g->req, $g->res, the typed calls of $g->sys->db with named arguments, errors, Composer packages from Packagist, with many examples. - [C#](https://docs.apimaker.dev/v4/docs/languages/csharp.md): Write custom APIs, hooks, schedulers and event listeners of API Maker in C# on .NET. public static async Task Main(G g), g.Req, g.Res, the typed calls of g.Sys.Db (new GetAll(…), List, GetAll), AmErrors, NuGet packages, with many examples. - [Go](https://docs.apimaker.dev/v4/docs/languages/go.md): Write custom APIs, hooks, schedulers and event listeners of API Maker in Go. func Main(g *am.G) (any, error), g.Req, g.Res, the typed calls of g.Sys.Db (am.GetAll, []am.M), am.Fail, Go modules, with many examples. - [Rust](https://docs.apimaker.dev/v4/docs/languages/rust.md): Write custom APIs, hooks, schedulers and event listeners of API Maker in Rust. pub fn main(g: &mut G) -> Result, g.req, g.res, g.sys.db, am::fail, crates from crates.io, with many examples. - [Java](https://docs.apimaker.dev/v4/docs/languages/java.md): Write custom APIs, hooks, schedulers and event listeners of API Maker in Java. static Object main(G g) in a class, g.req, g.res, g.sys.db, am.Json, AmErrors, packages from Maven Central, with many examples. - [Kotlin](https://docs.apimaker.dev/v4/docs/languages/kotlin.md): Write custom APIs, hooks, schedulers and event listeners of API Maker in Kotlin. fun main(g: G): Any?, g.req.body, g.res, the typed calls of g.sys.db (GetAll, List), mapOf and data classes as JSON, AmErrors, packages from Maven Central, with many examples. ### Schema and data - [Table Schema](https://docs.apimaker.dev/v4/docs/schema/schema.md): The schema of a table in API Maker - types, conversions, validations, defaults, keys, relations, virtual fields, auto increment, encryption and hashing - written in TypeScript, checked against the code, with the errors each rule gives and a field to copy for each rule. - [Table Designer](https://docs.apimaker.dev/v4/docs/schema/table-designer.md): Make and change tables in the admin panel of API Maker on every database - the four panels of instances, databases and tables, the designer and its script, editing a table with the statements shown first, the schema which follows its table, changes recorded into migration scripts, and editing a database. - [Data types](https://docs.apimaker.dev/v4/docs/schema/data-types.md): Every column type of MongoDB, MySQL, MariaDB, PostgreSQL, SQL Server and Oracle through the APIs of API Maker - vectors, JSON, bytes, shapes, intervals and arrays as plain JSON, written and read the same way by generated APIs, schema APIs and g.sys.db in every language. - [Auto Increment](https://docs.apimaker.dev/v4/docs/features/auto-increment.md): Sequential numbers on every database, MongoDB included - isAutoIncrementByAM in the schema, start and step, how the next value is chosen, the Auto Increments page, and what travels with Git. - [Optimistic Concurrency Control](https://docs.apimaker.dev/v4/docs/features/optimistic-concurrency-control.md): Stop lost updates with one schema flag - isConcurrencyControlField makes update by id and replace by id compare the version sent with the version stored, and refuse a stale write with a 400. - [Multi-Tenant APIs](https://docs.apimaker.dev/v4/docs/features/multi-tenant.md): One set of APIs for all your customers, each with a database of its own. Keep tenants in a table, name the tenant on every request, and give each tenant's users tokens that work for their tenant only. - [Database Migration Scripts](https://docs.apimaker.dev/v4/docs/features/database-migration.md): Migration scripts in API Maker - code in TypeScript, Python, PHP, C#, Go, Rust, Java or Kotlin with the same g as a custom API, run once per environment in order after a Git pull or a deployment hook, or by hand from the Database Migration page, with the Index Maker script among them, and the changes of tables recorded from the admin panel. ### SSR websites - [SSR websites](https://docs.apimaker.dev/v4/docs/ssr/index.md): Websites written in TSX and rendered by the API Maker server, next to your data - file routing, layouts, loaders, forms with CSRF protection, sign-in with your auth providers, row rules, page cache, UI libraries, SEO, git and templates. - [The panel - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/editor.md): The SSR Websites page of the API Maker panel - the files of a website in a tree (new files and folders, rename, drag and drop, copy, upload, download), the editor and its keys, and the preview beside the editor or under it, at the size of a device or of your own. - [Pages and routing - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/pages-and-routing.md): How the files of pages/ become the routes of an SSR website - pages, dynamic parts, catch-all routes, groups, layouts, middlewares, 404 and error pages, endpoints and public files. - [Data - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/data.md): Reading and writing data in the pages of an SSR website - loaders, ctx.db with the tables a website lists and the row rules of each, ctx.api as the visitor, ctx.sys, ctx.fetch, ctx.cache and JSON files. - [Forms - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/forms.md): Forms in the pages of an SSR website - the action which takes a form, CSRF tokens added by themselves, checks on the server, messages shown once, the redirect after a post, file uploads, and forms sent by scripts. - [Authentication - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/authentication.md): Visitors of an SSR website sign in with the auth providers of the account - sign-in, sign-up, sign-out, Google, Azure AD and AWS Cognito tokens, who may open a page (access, groups, providers, code), default access, and the rows each visitor reaches. - [Caching - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/caching.md): How SSR websites stay fast - templates compiled when a file is saved, engines kept per website, pages kept by the server for everyone or per visitor, stale-while-revalidate, tags dropped with ctx.revalidate, and public files kept by browsers. - [UI libraries - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/ui-libraries.md): CSS frameworks, icons, charts and scripts for the pages of an SSR website - libraries.json, a catalog with hashes (SRI), packages of npm, addresses, libraries for some pages only, self-hosting, and the CSP which lets them in. - [Images - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/images.md): Make the images of an SSR website smaller in one click - a whole folder or one image, JPEG with MozJPEG, WebP with libwebp, PNG without loss, a largest size, a preview with a slider, the sizes before and after, and the references updated when an image changes its format. - [SEO - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/seo.md): What search engines and social networks read of the pages of an SSR website - title and title template, description, Open Graph and Twitter cards, canonical addresses, noindex, sitemap.xml, robots.txt and JSON-LD. - [Settings of a website - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/site-config.md): Every setting of site.config.ts of an SSR website - title, domains, auth providers, default access, the tables ctx.db reaches with their row rules, ctx.api, ctx.sys, ctx.fetch, cache, CSP and headers, SEO, redirects, trailing slashes, maintenance and limits. - [Security - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/security.md): What the API Maker server does to keep SSR websites and their data safe by default - escaping, CSP with nonces, CSRF tokens, sealed sessions, tables and rows a website may reach, open redirects, isolation of websites, safe caching - and what is left to you. - [Deployment - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/deployment.md): Serving an SSR website of API Maker at the root of its own domain - the domains setting, reverse proxies (nginx, Caddy, Traefik), TLS, forwarded headers, several servers, and the settings of the server for the websites. - [Git - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/git.md): SSR websites in the git repository of an account - src/ssr// with its files, website.yaml, and a tsconfig.json and the declarations of am-ssr for editors; commit, pull and revert from the Git page. - [Templates - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/templates.md): The websites a new SSR website starts from - Starter, Blank, Blog, Shop, Dashboard, Landing page and Documentation - and the models a new page, layout, endpoint or component starts as. - [Examples - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/examples.md): Recipes for SSR websites of API Maker - lists with search and pages, record pages, a customer's own data, admin-only sections, sign-in flows, uploads, JSON APIs, webhooks, htmx partials, charts, client scripts with CSRF, i18n, feeds, redirects, maintenance and more. - [Reference - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/api-reference.md): Every export of the module am-ssr, every member of ctx, PageConfig, the props of pages, layouts and error pages, and what a page, a layout, a middleware and an endpoint export. - [Guide for AI assistants - SSR websites](https://docs.apimaker.dev/v4/docs/ssr/ai-guide.md): What an AI assistant needs to write the pages of an SSR website of API Maker right the first time - the files, the rules, the APIs, the security rules, and complete examples to copy. ## Operate - [Operate](https://docs.apimaker.dev/v4/docs/guides/index.md): Run API Maker after the APIs are built - the configuration of a server and the settings of databases, tables, APIs and sandboxes, caching and Index Maker, logs and dashboards, Git and upgrades, team work, internationalization, the management API and the connection strings of every database. ### Configuration and settings - [API Maker Configuration](https://docs.apimaker.dev/v4/docs/am-resources/api-maker-configurations.md): Every setting of an API Maker server - logs, databases, Redis, security, sandboxes, limits and uploads - set from the Deployment Settings page of the root user, a settings file, the .env file of each server, the environment or the command line. Export and import with sealed secrets. - [Database Settings](https://docs.apimaker.dev/v4/docs/settings/databaseSettings.md): Settings which apply to every table of a database in API Maker - access type, auth providers, caching, encrypted payloads - inherited by the tables and the APIs which do not override them. - [Collection Settings](https://docs.apimaker.dev/v4/docs/settings/collectionSettings.md): Settings of one table or collection in API Maker - access type, auth providers, caching, encrypted payloads - over the settings of its database, under the settings of its APIs. - [API Settings](https://docs.apimaker.dev/v4/docs/settings/apiSettings.md): Settings of one generated or schema API of a table in API Maker - access type, auth providers, encrypted payloads - the most specific level, over the table and the database. - [System API Settings](https://docs.apimaker.dev/v4/docs/settings/systemApiSettings.md): Settings of one system API of API Maker - open it over HTTP with TOKEN_ACCESS or IS_PUBLIC, require person tokens with authProviders, cache its answers, refuse plain payloads. - [Sandbox Settings](https://docs.apimaker.dev/v4/docs/settings/sandboxSettings.md): Where the code of an API Maker account runs - the runtime and version of each language, its packages from npm, PyPI, Packagist, NuGet, Go modules, crates.io and Maven Central, your own Dockerfile, the images on every server, the sandbox count, the automatic restart and the allowed origins. ### Performance - [Automatic Caching](https://docs.apimaker.dev/v4/docs/features/automatic-caching.md): Turn caching on for a table, a database, a custom API or a system API and API Maker answers the reads from Redis, drops the cached answers on every write through it, and lets you reset them from code or per request. - [Index Maker](https://docs.apimaker.dev/v4/extensions/index_maker/introduction.md): Record the database queries of your APIs during a scanning period, see which ones use no index with explain, and create the missing indexes. - [Automatic indexes](https://docs.apimaker.dev/v4/extensions/index_maker/automatic_indexes.md): Switch on the automatic mode of Index Maker - it records the queries of your APIs on its own, decides which slow or frequent queries on big tables deserve an index, creates it, and writes it into the migration script am_index_maker so every environment gets it on deploy. - [Logs and Dashboards](https://docs.apimaker.dev/v4/docs/logs/logs-and-dashboards.md): Watch API Maker run - log profiles which choose the calls to log, the log explorer which searches them, the servers of the cluster with their configuration, the Redis dashboard of the cache, and the ER diagram of the account. ### Git and deployment - [Git Integration](https://docs.apimaker.dev/v4/docs/Git/git.md): Your whole API Maker project in Git - branches, pull, push with a commit, status and diff of every change, revert, secrets kept out, migration scripts run after a pull, and deployment hooks for CI. - [Deploy API Maker](https://docs.apimaker.dev/v4/docs/features/deploy-api-maker.md): Upgrade API Maker v4 on every server of the cluster from the admin panel, from npm or from an uploaded package, with live progress for each server and an automatic way back. - [Team Work](https://docs.apimaker.dev/v4/docs/features/team-work.md): Several developers on one API Maker project - one account per developer with its own user path, secrets and branch, database names masked per developer, the code finder across every piece of code, and the compare editor before a push. - [Internationalization](https://docs.apimaker.dev/v4/docs/i18/i18.md): Answer the errors and messages of API Maker in the language of the caller - an i18n item maps every message to its translation, and the header x-am-internationalization picks it per request. - [Operate API Maker Using API](https://docs.apimaker.dev/v4/docs/am-resources/operate-api-maker-using-api.md): Create, change and delete admin accounts of API Maker, and change their default secret, from a script - one route of the server, a communication token, four operations with their payloads, answers and errors. ### Connection strings - [MongoDB Connection Strings](https://docs.apimaker.dev/v4/docs/Database-connection-string/mongodb-connection-strings.md): The MongoDB connection strings API Maker takes - mongodb:// and mongodb+srv://, replica sets, MongoDB Atlas, TLS - with examples, how to add one to an instance, and the common errors. - [MySQL Connection Strings](https://docs.apimaker.dev/v4/docs/Database-connection-string/mysql-connection-strings.md): The MySQL connection strings API Maker takes, for MySQL, Percona Server and TiDB - the five parts it reads, examples, how to add one to an instance, and the common errors. - [MariaDB Connection Strings](https://docs.apimaker.dev/v4/docs/Database-connection-string/mariadb-connection-strings.md): The MariaDB connection strings API Maker takes - the five parts it reads, examples for one server and a Galera cluster, how to add one to an instance, and the common errors. - [PostgreSQL Connection Strings](https://docs.apimaker.dev/v4/docs/Database-connection-string/postgres-connection-strings.md): The PostgreSQL connection strings API Maker takes - the parts it reads, TLS with sslmode and your own certificate authority, examples, how to add one to an instance, and the common errors. - [Oracle Connection Strings](https://docs.apimaker.dev/v4/docs/Database-connection-string/oracledb-connection-strings.md): How API Maker connects to Oracle - a connect string, a username and a password kept as three keys of the secret, Easy Connect examples, the privilege of an instance, and the common errors. - [SQL Server Connection Strings](https://docs.apimaker.dev/v4/docs/Database-connection-string/sqlserver-connection-strings.md): The SQL Server connection strings API Maker takes - the keys it reads, encryption and certificates, named instances, Azure SQL, examples, how to add one to an instance, and the common errors. ## Code examples - [Code Examples](https://docs.apimaker.dev/v4/examples/index.md): A working example, in TypeScript, Python, PHP, C#, Go, Rust, Java and Kotlin, of every method your code can call in API Maker - g.sys.db and g.sys.db.gen for the database APIs, g.sys.system, g.sys.cache, the request and response objects, the shared space and the logger. ### Database APIs (g.sys.db) - [Get All](https://docs.apimaker.dev/v4/examples/sys/db/getAll.md): Retrieve all records from a specified collection in your database using API Maker's `g.sys.db.getAll` method. - [Get All by Stream](https://docs.apimaker.dev/v4/examples/sys/db/getAllByStream.md): Fetch all records from a collection in a streaming manner, useful for handling large datasets efficiently. - [Get by ID](https://docs.apimaker.dev/v4/examples/sys/db/getById.md): Retrieve a single record from a collection based on its unique identifier using API Maker's g.sys.db.getById method. - [Save Single/Multiple](https://docs.apimaker.dev/v4/examples/sys/db/saveSingleOrMultiple.md): Insert one or more records into a collection using API Maker's g.sys.db.save method. - [Master Save/Update](https://docs.apimaker.dev/v4/examples/sys/db/masterSave.md): Perform save or update operations on single or multiple records with master-level control using API Maker. - [Array Operations](https://docs.apimaker.dev/v4/examples/sys/db/arrayOperations.md): Manipulate array fields within documents using operations like push, pull, and pop in API Maker. - [Update by ID](https://docs.apimaker.dev/v4/examples/sys/db/updateById.md): Update a single record in a collection based on its unique identifier using API Maker's g.sys.db.updateById method. - [Update Many](https://docs.apimaker.dev/v4/examples/sys/db/updateMany.md): Update multiple records in a collection based on specified criteria using API Maker's g.sys.db.updateMany method. - [Replace by ID](https://docs.apimaker.dev/v4/examples/sys/db/replaceById.md): Replace a record in a collection with a new document based on its unique identifier using API Maker's g.sys.db.replaceById method. - [Remove by ID](https://docs.apimaker.dev/v4/examples/sys/db/removeById.md): Delete a single record from a collection based on its unique identifier using API Maker's g.sys.db.removeById method. - [Query for Get Data](https://docs.apimaker.dev/v4/examples/sys/db/query.md): Perform complex queries to retrieve data from a collection with filtering, sorting, and pagination using API Maker. - [Query for Get Data by Stream](https://docs.apimaker.dev/v4/examples/sys/db/queryByStream.md): Fetch data from a collection in a streaming manner with complex queries for efficient data retrieval. - [Remove by Query](https://docs.apimaker.dev/v4/examples/sys/db/removeByQuery.md): Delete records from a collection based on specified criteria using API Maker's g.sys.db.removeByQuery method. - [Aggregate](https://docs.apimaker.dev/v4/examples/sys/db/aggregate.md): Perform aggregation operations like count, sum, average, etc., on data within a collection using API Maker. - [Count](https://docs.apimaker.dev/v4/examples/sys/db/count.md): Get the total number of records in a collection or matching a specific query using API Maker's g.sys.db.count method. - [Distinct](https://docs.apimaker.dev/v4/examples/sys/db/distinct.md): Retrieve distinct values for a specified field in a collection using API Maker's g.sys.db.distinct method. - [Distinct with Query](https://docs.apimaker.dev/v4/examples/sys/db/distinctQuery.md): Fetch distinct values for a field based on a query filter using API Maker's g.sys.db.distinctWithQuery method. ### System APIs (g.sys.system, g.sys.cache) - [System APIs from Code](https://docs.apimaker.dev/v4/examples/sys/system/system.md): Every system API of API Maker called from your code with g.sys.system and g.sys.cache - encryption, hashing, tokens, secrets, plain queries, indexes, events, validations, external APIs and Redis - each with its page and its code in eight languages. - [Execute Query Example](https://docs.apimaker.dev/v4/examples/sys/system/executeQuery.md): Learn how to run SQL queries with API Maker’s executeQuery function, including DDL, DML, DQL, and joins. - [Call External API Example](https://docs.apimaker.dev/v4/examples/sys/system/callExternalApi.md): Examples of calling other APIs from API Maker code - JSON, forms, file uploads, SOAP and XML, OAuth 2, retries, redirects, file downloads, and lists of calls in parallel or in sequence, in every language. ### Custom APIs - [Custom API Example](https://docs.apimaker.dev/v4/examples/custom-apis/custom-api.md): Learn how to create and implement custom APIs in API Maker with this comprehensive example, including code snippets and best practices. ### Request (g.req) - [The Request in Code (g.req)](https://docs.apimaker.dev/v4/examples/req/req.md): Read the request in your code with g.req of API Maker - its body, headers, params of the path, query params and the data of an event - with the same code in eight languages. - [Who Calls (g.req.auth)](https://docs.apimaker.dev/v4/examples/req/auth/auth.md): Read in your code who calls an API of API Maker - the API user, a person of your users table, a person of Google, Azure AD or AWS Cognito - with g.req.auth, in eight languages, and a login API which gets both tokens. - [Custom Auth Provider Example](https://docs.apimaker.dev/v4/examples/req/auth/authCustom.md): Build your own token provider in API Maker with jose — sign it, validate it, and read the payload from g.req.auth.authCustom. - [The Answer in Code (g.res)](https://docs.apimaker.dev/v4/examples/res/res.md): Shape the answer of an API in your code with g.res of API Maker - its output, status code, errors, warnings, data shared between hooks, and the content type (JSON, HTML, text, XML, YAML, bytes) - in eight languages. ### Shared space (g.shared) - [Global Shared Example](https://docs.apimaker.dev/v4/examples/shared/globalShared.md): See how to use g.shared to share data across APIs, pre/post-hooks, and custom code in API Maker—enable seamless data flow. ## Benchmarks ### API Benchmarks - [API Maker benchmarks : requests per second and memory on real servers](https://docs.apimaker.dev/v4/docs/benchmarks/index.md): API Maker benchmarks on 7 Linode servers, 1 to 8 vCPUs, shared and dedicated : requests per second, latency and memory on MongoDB, PostgreSQL and MySQL. - [API Maker benchmark results : every API on every server](https://docs.apimaker.dev/v4/docs/benchmarks/summary.md): Every API Maker benchmark side by side : req/s and latency on 7 Linode servers (1 to 8 vCPUs, shared and dedicated), scaling, memory. - [How API Maker is benchmarked](https://docs.apimaker.dev/v4/docs/benchmarks/methodology.md): How API Maker is benchmarked - Linode servers of 1 to 8 vCPUs, autocannon with 100 connections for 15 s, two rounds, the dataset, every API setting and the commands to run it yourself. ### API Benchmarks › Linode shared CPU - [API Maker benchmark : 1 vCPU, 1 GB RAM (Linode shared CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/linode-shared-1-vcpu-1gb.md): API Maker on 1 shared vCPU, 1 GB (Linode) : 2,435 req/s get all, 12,140 cached, on MongoDB, PostgreSQL and MySQL, with memory and autocannon output. - [API Maker benchmark : 2 vCPU, 4 GB RAM (Linode shared CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/linode-shared-2-vcpu-4gb.md): API Maker on 2 shared vCPUs, 4 GB (Linode) : 4,692 req/s get all, 18,970 cached, on MongoDB, PostgreSQL and MySQL, with memory and autocannon output. - [API Maker benchmark : 4 vCPU, 8 GB RAM (Linode shared CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/linode-shared-4-vcpu-8gb.md): API Maker on 4 shared vCPUs, 8 GB (Linode) : 7,423 req/s get all, 26,444 cached, on MongoDB, PostgreSQL and MySQL, with memory and autocannon output. - [API Maker benchmark : 8 vCPU, 32 GB RAM (Linode shared CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/linode-shared-8-vcpu-32gb.md): API Maker on 8 shared vCPUs, 32 GB (Linode) : 11,002 req/s get all, 44,564 cached, on MongoDB, PostgreSQL and MySQL, with memory and autocannon output. ### API Benchmarks › Linode dedicated CPU - [API Maker benchmark : 2 vCPU, 4 GB RAM (Linode dedicated CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/linode-dedicated-2-vcpu-4gb.md): API Maker on 2 dedicated vCPUs, 4 GB (Linode) : 3,712 req/s get all, 16,455 cached, on MongoDB, PostgreSQL and MySQL, with memory and autocannon output. - [API Maker benchmark : 4 vCPU, 8 GB RAM (Linode dedicated CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/linode-dedicated-4-vcpu-8gb.md): API Maker on 4 dedicated vCPUs, 8 GB (Linode) : 7,614 req/s get all, 32,588 cached, on MongoDB, PostgreSQL and MySQL, with memory and autocannon output. - [API Maker benchmark : 8 vCPU, 16 GB RAM (Linode dedicated CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/linode-dedicated-8-vcpu-16gb.md): API Maker on 8 dedicated vCPUs, 16 GB (Linode) : 12,640 req/s get all, 47,980 cached, on MongoDB, PostgreSQL and MySQL, with memory and autocannon output. ### WebSocket Benchmarks - [API Maker WebSocket benchmarks : connections per server, memory per client, scaling](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/index.md): API Maker WebSocket benchmarks on 7 Linode servers : up to 3.66 million clients on one server, 8.5 to 8.8 KB per client, new clients and notifications a second, and how to scale. - [API Maker WebSocket benchmarks : all results, every server side by side](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/summary.md): Every WebSocket result of API Maker on 7 Linode servers side by side : clients connected, memory per client, new clients and notifications a second, delivery times. - [Scale API Maker WebSockets to N users : one big server or several small ones](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/scaling.md): How API Maker serves N WebSocket users : servers behind a load balancer which share one Redis, the rule to count them, and one big server against several small ones, measured. - [How the API Maker WebSocket benchmarks are made](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/methodology.md): How the WebSocket benchmarks of API Maker are made - Linode servers of 1 to 8 vCPUs, real clients with both tokens and a subscription, autocannon for the calls, 60 s a run, the events and the commands. ### WebSocket Benchmarks › Linode shared CPU - [API Maker WebSocket benchmark : 1 vCPU, 1 GB RAM (Linode shared CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/linode-shared-1-vcpu-1gb.md): API Maker WebSockets on 1 shared vCPU, 1 GB (Linode) : 26,484 clients connected at once, 9 KB each, 2,602 new clients a second, with memory and outputs. - [API Maker WebSocket benchmark : 2 vCPU, 4 GB RAM (Linode shared CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/linode-shared-2-vcpu-4gb.md): API Maker WebSockets on 2 shared vCPUs, 4 GB (Linode) : 338,016 clients connected at once, 8 KB each, 4,041 new clients a second, with memory and outputs. - [API Maker WebSocket benchmark : 4 vCPU, 8 GB RAM (Linode shared CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/linode-shared-4-vcpu-8gb.md): API Maker WebSockets on 4 shared vCPUs, 8 GB (Linode) : 801,972 clients connected at once, 9 KB each, 7,009 new clients a second, with memory and outputs. - [API Maker WebSocket benchmark : 8 vCPU, 32 GB RAM (Linode shared CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/linode-shared-8-vcpu-32gb.md): API Maker WebSockets on 8 shared vCPUs, 32 GB (Linode) : 3,662,564 clients connected at once, 9 KB each, 10,939 new clients a second, with memory and outputs. ### WebSocket Benchmarks › Linode dedicated CPU - [API Maker WebSocket benchmark : 2 vCPU, 4 GB RAM (Linode dedicated CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/linode-dedicated-2-vcpu-4gb.md): API Maker WebSockets on 2 dedicated vCPUs, 4 GB (Linode) : 338,006 clients connected at once, 8 KB each, 3,464 new clients a second, with memory and outputs. - [API Maker WebSocket benchmark : 4 vCPU, 8 GB RAM (Linode dedicated CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/linode-dedicated-4-vcpu-8gb.md): API Maker WebSockets on 4 dedicated vCPUs, 8 GB (Linode) : 795,888 clients connected at once, 9 KB each, 6,627 new clients a second, with memory and outputs. - [API Maker WebSocket benchmark : 8 vCPU, 16 GB RAM (Linode dedicated CPU)](https://docs.apimaker.dev/v4/docs/benchmarks/websockets/linode-dedicated-8-vcpu-16gb.md): API Maker WebSockets on 8 dedicated vCPUs, 16 GB (Linode) : 1,732,035 clients connected at once, 9 KB each, 10,093 new clients a second, with memory and outputs. ## Release notes - [API Maker Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/release_notes_summary.md): Every API Maker release from v1.0.0 (Dec 2023) to v4.0.0 - the date, the number of features, improvements and fixes, and the highlights of each version. - [API Maker v4.0.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v4.0.0.md): What’s new in v4.0.0:- API Maker is rebuilt in Rust, one process per server on every CPU core, your code in TypeScript, Python, PHP, C#, Go, Rust, Java or Kotlin, SSR websites, a table designer, a security report which reads your code, automatic indexes, code coverage in your IDE, the API Maker Launchpad desktop app, one port for APIs and web sockets. ### Older versions - [API Maker v1.0.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/API-Maker-1.0.0-Released.md): Initial 1.0.0 release:- core features, APIs, and first set of capabilities. - [API Maker v1.0.2 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.0.2.md): What’s new in v1.0.2:- initial patches and improvements after launch. - [API Maker v1.0.3 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.0.3.md): What’s new in v1.0.3:- targeted bug fixes and polish. - [API Maker v1.0.5 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.0.5.md): What’s new in v1.0.5:- minor fixes to improve stability and UX. - [API Maker v1.1.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.1.0.md): What’s new in v1.1.0:- feature upgrades and key fixes. - [API Maker v1.1.1 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.1.1.md): What’s new in v1.1.1:- patch-level fixes and refinements. - [API Maker v1.10.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.10.0.md): What’s new in v1.10.0:- new env vars, dashboard tweaks, caching & bug fixes. - [API Maker v1.11.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.11.0.md): What’s new in v1.11.0:- feature updates and maintenance fixes for smoother dev. - [API Maker v1.12.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.12.0.md): What’s new in v1.12.0:- improvements to performance, reliability, and workflow. - [API Maker v1.13.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.13.0.md): What’s new in v1.13.0:- platform enhancements and important bug fixes. - [API Maker v1.14.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.14.0.md): What’s new in v1.14.0:- new capabilities, fixes, and developer experience updates. - [API Maker v1.15.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.15.0.md): What’s new in v1.15.0:- feature upgrades plus performance and UX improvements. - [API Maker v1.15.1 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.15.1.md): What’s new in v1.15.1:- minor fixes and refinements to improve stability. - [API Maker v1.16.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.16.0.md): What’s new in v1.16.0:- enhancements, bug fixes, and performance tweaks. - [API Maker v1.17.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.17.0.md): What’s new in v1.17.0:- updates, optimizations, and quality improvements. - [API Maker v1.17.1 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.17.1.md): What’s new in v1.17.1:- incremental fixes and improvements for reliability. - [API Maker v1.17.2 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.17.2.md): What’s new in v1.17.2:- stability updates and fixes. Read the changes at a glance. - [API Maker v1.18.3 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.18.3.md): What’s new in v1.18.3:- Local client support and utilize AI features of local IDE - [API Maker v1.19.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.19.0.md): What’s new in v1.19.0:- Debugging support added for user's code. - [API Maker v1.19.1 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.19.1.md): What’s new in v1.19.1:- Local client running issue fix. - [API Maker v1.19.3 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.19.3.md): What’s new in v1.19.3:- UI & performance improvements - [API Maker v1.19.4 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.19.4.md): What’s new in v1.19.4:- Schema generation improvements. - [API Maker v1.19.5 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.19.5.md): What’s new in v1.19.5:- Diagram not loading table header fixed. - [API Maker v1.19.6 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.19.6.md): What’s new in v1.19.6:- Updates in postgresql schema generation - [API Maker v1.19.7 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.19.7.md): What’s new in v1.19.7:- Empty sandbox related issue fixed - [API Maker v1.19.8 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.19.8.md): What’s new in v1.19.8:- g.req.headers support added & bug fixing - [API Maker v1.2.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.2.0.md): What’s new in v1.2.0:- enhancements and reliability improvements. - [API Maker v1.2.1 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.2.1.md): What’s new in v1.2.1:- small but important fixes for stability. - [API Maker v1.20.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.20.0.md): What’s new in v1.20.0:- Index Maker released & Multi tenant architecture supported out of the box. - [API Maker v1.20.2 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.20.2.md): What’s new in v1.20.2:- Bug fixing & performance improvements - [API Maker v1.20.3 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.20.3.md): What’s new in v1.20.3:- Bug fixing & improvements - [API Maker v1.21.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.21.0.md): What’s new in v1.21.0:- Encrypt Strings & PDF export in UI Maker & More improvements - [API Maker v1.3.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.3.0.md): What’s new in v1.3.0:- new features plus improvements and fixes. - [API Maker v1.3.1 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.3.1.md): What’s new in v1.3.1:- minor bug fixes and performance tuning. - [API Maker v1.3.2 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.3.2.md): What’s new in v1.3.2:- patch updates focused on reliability and fixes. - [API Maker v1.3.3 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.3.3.md): What’s new in v1.3.3:- targeted patches and incremental refinements. - [API Maker v1.4.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.4.0.md): What’s new in v1.4.0:- enhancements, fixes, and workflow polishing. - [API Maker v1.5.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.5.0.md): What’s new in v1.5.0:- feature updates and performance improvements. - [API Maker v1.5.2 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.5.2.md): What’s new in v1.5.2:- bug fixes and small improvements for a smoother run. - [API Maker v1.5.3 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.5.3.md): What’s new in v1.5.3:- patch fixes and minor enhancements for stability. - [API Maker v1.6.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.6.0.md): What’s new in v1.6.0:- quality updates, bug fixes, and developer UX gains. - [API Maker v1.7.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.7.0.md): What’s new in v1.7.0:- improvements across APIs, caching, and tooling. - [API Maker v1.8.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.8.0.md): What’s new in v1.8.0:- new features plus key fixes to streamline development. - [API Maker v1.8.2 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.8.2.md): What’s new in v1.8.2:- minor updates, bug fixes, and stability improvements. - [API Maker v1.8.3 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.8.3.md): What’s new in v1.8.3:- patch release with targeted fixes and refinements. - [API Maker v1.9.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v1.9.0.md): What’s new in v1.9.0:- enhancements, fixes, and performance optimizations. - [API Maker v2.0.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v2.0.1.md): What’s new in v1.22.0:- Breaking Change & Improvement & bug fixing - [API Maker v2.1.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v2.1.0.md): What’s new in v2.1.0:- Bug fixing & small improvements - [API Maker v2.1.1 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v2.1.1.md): What’s new in v2.1.1:- Bug fixing & small improvements - [API Maker v2.2.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v2.2.0.md): What’s new in v2.2.0:- Bug fixing & small improvements - [API Maker v2.3.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v2.3.0.md): What’s new in v2.3.0:- Table viewer added - [API Maker v3.0.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v3.0.0.md): What’s new in v3.0.0:- Authorization related improvements, DB Token Generators - [API Maker v3.1.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v3.1.0.md): What’s new in v3.1.0:- Git history per item, request history, unified diff, analytics dashboard, log explorer, MFA login - [API Maker v3.2.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v3.2.0.md): What’s new in v3.2.0:- API Maker user tokens shared across admin users - [API Maker v3.3.0 Release Notes](https://docs.apimaker.dev/v4/docs/blog/release-notes/v3.3.0.md): What’s new in v3.3.0:- APIs Security Report & Actions, Index Maker automatic indexes with the migration script am_index_maker, index system APIs createIndexes / dropIndexes / getIndexes, a redesigned Index Maker page, null values are allowed for encrypted & hashed fields.