# API Maker Documentation

> Learn API Maker step by step - install it, connect a database, get REST APIs for every table, add your own TypeScript logic, secure it with tokens and groups, and deploy with Git.

Source: https://docs.apimaker.dev/index.html

API Maker v3.3.0 · The framework for AI era

**Connect a database. Get every API. Add your logic.**

API Maker connects to your databases and gives every table secure REST APIs at once : 17 per MongoDB collection, 14 per SQL table. You add your own TypeScript in custom APIs, hooks, schedulers and events. Caching, access control, logging, monitoring and Git deployment are built in, and it all runs on your own servers.

- [Your first API in 10 minutes](https://docs.apimaker.dev/v1/docs/getting-started/first-api.html)
- [Install on a server](https://docs.apimaker.dev/v1/docs/getting-started/install-on-server.html)
- [Run on your computer](https://docs.apimaker.dev/v1/docs/getting-started/local-run.html)
- [How it works](https://docs.apimaker.dev/v1/docs/getting-started/how-it-works.html)

## Start here

1. **Install API Maker** On a blank Ubuntu server, one command installs everything : [Install on a server](https://docs.apimaker.dev/v1/docs/getting-started/install-on-server.html). On your laptop, the [API Maker Local Run](https://docs.apimaker.dev/v1/docs/getting-started/local-run.html) desktop app runs API Maker and its databases in Docker.

    ```bash
    curl -fsSL https://apimaker.dev/v1/install.sh > install.sh && bash install.sh --default --version=latest --license_key=YOUR_KEY
    ```
2. **Connect a database** Put the connection string in the default [secret](https://docs.apimaker.dev/v1/docs/secrets/secrets.html) and add an [instance](https://docs.apimaker.dev/v1/docs/apis-all/overview.html#instances). Every table of it gets its [APIs](https://docs.apimaker.dev/v1/docs/apis-all/overview.html) right away. A new account even comes with a sample shop : instance, schemas, custom APIs and hooks to read.
3. **Call an API** Get a token of the [API user](https://docs.apimaker.dev/v1/docs/apis-security/api-user-permission.html) with the [token API](https://docs.apimaker.dev/v1/docs/apis-all/system-apis/system-generated-token-api.html), send it in `x-am-authorization`, and read your data : [Your first API](https://docs.apimaker.dev/v1/docs/getting-started/first-api.html) walks through it with curl.
4. **Add your logic** Write [custom APIs](https://docs.apimaker.dev/v1/docs/apis-all/custom-apis/user-created-custom-api.html), [hooks](https://docs.apimaker.dev/v1/docs/apis-all/hooks/preHook-api.html), [schedulers](https://docs.apimaker.dev/v1/docs/apis-all/schedulers/user-created-schedulers-api.html) and [events](https://docs.apimaker.dev/v1/docs/apis-all/events/user-created-events-api.html) in TypeScript, with the [global object `g`](https://docs.apimaker.dev/v1/docs/pre-defined-terms/global-object-g.html) to reach every API of API Maker from your code.
5. **Secure and ship** [Groups](https://docs.apimaker.dev/v1/docs/apis-security/api-group-permission.html) decide which APIs, tables and fields each application may use, the [security report](https://docs.apimaker.dev/v1/docs/apis-security/api-security-report.html) finds the gaps, and a [Git pull](https://docs.apimaker.dev/v1/docs/Git/git.html) is the deployment.

## Find your way

- [How API Maker works](https://docs.apimaker.dev/v1/docs/getting-started/how-it-works.html) : The life of a request, the API families, the two tokens and where your code runs.
- [All APIs at a glance](https://docs.apimaker.dev/v1/docs/apis-all/overview.html) : Every generated, schema, custom and system API with its method and URL, on one page.
- [Table schema](https://docs.apimaker.dev/v1/docs/schema/schema.html) : Types, validations, conversions, defaults, ids, encryption, relations, concurrency control.
- [The global object g](https://docs.apimaker.dev/v1/docs/pre-defined-terms/global-object-g.html) : Request, response, database, system and cache APIs, logger and shared space in your code.
- [Code examples](https://docs.apimaker.dev/v1/examples/index.html) : A working snippet for every method of g.sys.db, g.sys.system and g.sys.cache.
- [Request headers](https://docs.apimaker.dev/v1/docs/apis-all/header/requestHeader.html) : Tokens, response case and format, encryption, caching, sandbox, tenant, language.
- [Security](https://docs.apimaker.dev/v1/docs/apis-security/api-security-report.html) : Groups, API users, auth providers, single sign-on, encrypted payloads and the security report.
- [Operations](https://docs.apimaker.dev/v1/docs/features/automatic-caching.html) : Caching, logs, dashboards, deployment of API Maker itself and its configuration.
- [Cheat sheet](https://docs.apimaker.dev/v1/docs/cheat-sheet.html) : URLs, headers, query params and the g object on one page, to keep next to your editor.
- [Docs for AI assistants](https://docs.apimaker.dev/v1/docs/ai/llms.html) : llms.txt, the Markdown twin of every page, and how to point an agent at this documentation. (new)
- [Release notes](https://docs.apimaker.dev/v1/docs/blog/release-notes/release_notes_summary.html) : What changed in every version, from v1.0.0 to v3.3.0.
- [Benchmarks](https://docs.apimaker.dev/v1/docs/performance/api-maker/Linode/summary.html) : Requests per second on Linode servers from 1 to 8 vCPU, with and without caching.

## What you get with every table

| | Schema APIs `/api/schema` | Generated APIs `/api/gen` |
|---|---|---|
| Read | get all, get all by stream, get by id, query, query by stream, count, distinct, distinct with query, aggregate (MongoDB) | the same |
| Write | save single or multiple, master save, update by id, update many, replace by id (MongoDB), array operations (MongoDB), remove by id, remove by query | the same |
| Applies the [schema](https://docs.apimaker.dev/v1/docs/schema/schema.html) | types, validations, conversions, defaults, ids, encryption, concurrency control | no : data passes as it is |
| Filters | [find](https://docs.apimaker.dev/v1/docs/apis-all/query-params/find.html) with `$in`, `$gt`, `$like`, `$regex`, `$and`, `$or`… and [find and join](https://docs.apimaker.dev/v1/docs/apis-all/query-params/find.html#find-and-join-fields-of-related-tables) across tables | the same |
| Related data | [deep populate](https://docs.apimaker.dev/v1/docs/apis-all/query-params/deep.html) across tables, databases and instances | the same |
| Output | JSON, XML, YAML, text, any key case, flat objects, encrypted : [headers](https://docs.apimaker.dev/v1/docs/apis-all/header/requestHeader.html) | the same |

Every one of them can run [pre and post hooks](https://docs.apimaker.dev/v1/docs/apis-all/hooks/preHook-api.html), be [cached](https://docs.apimaker.dev/v1/docs/features/automatic-caching.html), be [logged](https://docs.apimaker.dev/v1/docs/logs/log-profile.html), send [WebSocket notifications](https://docs.apimaker.dev/v1/docs/pages/web-socket-event-page.html) and [emit events](https://docs.apimaker.dev/v1/docs/apis-all/events/user-created-events-api.html).

## Supported databases

MongoDB · MySQL · MariaDB · PostgreSQL · Microsoft SQL Server · Oracle Database · TiDB · Percona XtraDB, in one account at the same time, with queries and [deep populate](https://docs.apimaker.dev/v1/docs/apis-all/query-params/deep.html) across them. The [connection string](https://docs.apimaker.dev/v1/docs/Database-connection-string/mongodb-connection-strings.html) pages show the format for each one.

## Watch

[API Maker features quick walkthrough](https://youtu.be/7CMinfkIDCE)

More on the [Learn API Maker](https://www.youtube.com/playlist?list=PLfJ8NnUMaDUYNNZUX5M_KcIzn9qGCNj43) playlist.

## Stay in touch

[Twitter](https://twitter.com/api_maker) · [LinkedIn](https://www.linkedin.com/company/api-maker) · [YouTube](https://www.youtube.com/@api_maker) · report a problem at [API Maker Planning](https://github.com/APIMaker-dev/API-Maker-Planning/issues) · write to [contact@apimaker.dev](mailto:contact@apimaker.dev).
