---
title: Build over the HTTP API
description: 'Build and update Charming apps with plain web requests, no MCP server to add and nothing to install.'
sidebar:
  label: Build over the HTTP API
  order: 5
---

Charming has two ways in. One is [MCP](https://modelcontextprotocol.io), where your client adds Charming as a connector and gets a set of tools. The other is this one: a plain HTTP API that any agent able to make web requests can call, with nothing installed and no server to add.

Both build the same apps in the same account. Pick whichever your agent can do.

## When to use this path

Use the HTTP API when your client cannot add an MCP server, when adding one is more trouble than it is worth, or when your agent lives in a terminal or an editor and already makes web requests all day.

Most coding agents fall in that last group. Two cases do not: a chat surface that cannot make its own web requests, such as claude.ai or ChatGPT chat, and [Microsoft 365 Copilot](../clients/microsoft-365-copilot), which reaches Charming only through MCP. Setup steps per client are at [AI clients](../clients).

## Start here

Paste this into your agent:

```text
Connect me to Charming and help me build my first app. Use Charming's
HTTP API. Ask before starting account pairing, wait for me to approve
it, then read https://charm.ing/docs/build-http.md and ask me what I
want to build.
```

That URL is the full build manual, written for the agent rather than for you. Your agent reads it, then asks what you want.

## What your agent does

Creating an app needs no account and no token. Your agent posts the app's code and gets back a live URL plus a token scoped to that one app:

```bash
jq -n --rawfile m module.js --rawfile u ui.js \
    '{module: $m, ui: $u, pair: true, label: "my agent"}' \
  | curl -sS https://charm.ing/app \
      -H 'Content-Type: application/json' -d @-
```

`pair: true` asks for a pairing alongside the app, so the app keeps working under your account once you claim it. Your agent shows you a link and a short code, you approve at [charm.ing/pair](https://charm.ing/pair), and it holds a token for your whole account from then on.

Four routes cover building and using an app:

| Route | What it does |
| --- | --- |
| `POST /app` | Create an app and get its URL |
| `PUT /app/<id>` | Ship a code update |
| `GET /app/<id>/describe` | List the app's callable operations |
| `POST /app/<id>/api/<op>` | Call one operation |

## Where the detail lives

- [HTTP starter guide](https://charm.ing/docs/build-http.md): the full manual your agent reads, including the module contract, capabilities, and limits.
- [REST API reference](/docs/reference): every route, schema, and error, plus the [OpenAPI document](https://charm.ing/.well-known/openapi.json).
- [Authentication](../technical-reference/authentication): token scopes, pairing, and what happens when an app is claimed.

## Related

- [Connect to any AI agent](../capabilities/connect-any-agent)
- [AI clients](../clients)
- [Docs home](..)

Found a bug or need a feature? [Tell us](/docs/capabilities/feedback) with `submit_feedback` or `POST /app/{id}/feedback`. Your feedback shapes what we build next.
