# API overview

> Everything a Formclick form does goes through a small, public HTTP API. Use it directly from any language.

Source: https://docs.formclick.io/api-reference/overview

The Formclick Submission API accepts form submissions from browsers, mobile apps and servers. It is the same API that plain HTML forms and `formclick.min.js` use, so anything a form can do, your code can do.

| Endpoint | Purpose |
| --- | --- |
| `POST https://api.formclick.io/submit` | Create a submission. See [Submit endpoint](https://docs.formclick.io/api-reference/api-reference). |
| `POST https://api.formclick.io/preupload` | Get a one-time upload URL for a file. See [File upload API](https://docs.formclick.io/api-reference/file-upload-api). |
| Your webhook URL | Formclick calls you with each new submission. See [Webhook events](https://docs.formclick.io/api-reference/webhook-events). |

## Base URL

```
https://api.formclick.io
```

## Quick example

```bash
curl -X POST https://api.formclick.io/submit \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"access_key":"YOUR_ACCESS_KEY","name":"Jane","email":"jane@example.com","message":"Hello"}'
```

```json
{ "success": true, "message": "Thank you! Your message has been received." }
```

## Conventions

- All endpoints use HTTPS. Plain HTTP is not supported.
- Requests and responses are JSON unless noted. The submit endpoint also accepts form-encoded bodies.
- Every response carries `success: true` or `success: false`. Errors include a readable `message`.
- CORS is open to every origin, so you can call the API straight from the browser.

> **Managing forms programmatically:** Need to list forms, read submissions or create forms? Use the OAuth-based [REST API](https://docs.formclick.io/api-reference/rest-api), the [Make app](https://docs.formclick.io/html-forms/make) (coming soon) or, for AI assistants, the [MCP server](https://docs.formclick.io/mcp/mcp-overview).
