> ## Documentation Index
> 
> Fetch the complete documentation index at: [/docs/llms.txt](/docs/llms.txt)
> 
> Use this file to discover all available pages before exploring further.

[Skip to main content](#content-area)

The public submission endpoint. No authentication required.

## 

[​

](#endpoint)

Endpoint

```
POST https://osforms.com/api/v1/f/{slug}
```

Accepts `application/json`, `application/x-www-form-urlencoded`, and `multipart/form-data`.

## 

[​

](#html-form-usage)

HTML form usage

```
<form action="https://osforms.com/api/v1/f/{slug}" method="POST">
  <input type="text" name="name" />
  <input type="email" name="email" />
  <button type="submit">Send</button>
</form>
```

Returns a `303` redirect to your form’s redirect URL on success.

## 

[​

](#api-/-json-usage)

API / JSON usage

```
curl -X POST https://osforms.com/api/v1/f/{slug} \
  -H "Content-Type: application/json" \
  -d '{"name": "Jane", "email": "jane@example.com"}'
```

```
{ "success": true, "message": "Submission received" }
```

## 

[​

](#response-codes)

Response codes

| Status | Meaning |
| --- | --- |
| `200` | Submission stored successfully (JSON clients) |
| `303` | Submission stored, redirect to redirect URL (HTML forms) |
| `403` | Monthly submission limit reached |
| `422` | CAPTCHA verification failed |
| `429` | Rate limit exceeded |

## 

[​

](#rate-limiting)

Rate limiting

Default: **10 requests/minute** per IP per form. Configurable per form in settings. When rate limited, the response includes a `Retry-After` header with seconds until reset.

[Forms](/docs/api-reference/forms)

⌘I