> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myproceeds.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a service

> Create a Proceeds service with POST /v1/services.

Use the REST API to create a service programmatically. For the dashboard path, see [Create a service](/quickstart/create-a-service).

## Endpoint

```
POST https://api.myproceeds.xyz/v1/services
```

Requires scope `services:write`. See [Authentication](/api-reference/authentication).

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.myproceeds.xyz/v1/services \
    -H "Authorization: Bearer mpk_your_key_here" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "weather-api",
      "description": "Public weather endpoints",
      "baseUrl": "https://api.example.com",
      "authMethod": "none",
      "networks": ["base-sepolia"],
      "mode": "testnet"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.myproceeds.xyz/v1/services", {
    method: "POST",
    headers: {
      Authorization: "Bearer mpk_your_key_here",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      name: "weather-api",
      description: "Public weather endpoints",
      baseUrl: "https://api.example.com",
      authMethod: "none",
      networks: ["base-sepolia"],
      mode: "testnet",
    }),
  });

  if (!response.ok) {
    throw new Error(await response.text());
  }

  const { data, meta } = await response.json();
  // data.id → use when creating paywalls
  ```
</CodeGroup>

## Request body

| Field         | Required | Description                                                                                                                      |
| ------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `name`        | Yes      | 1–100 characters                                                                                                                 |
| `baseUrl`     | Yes      | Upstream origin URI                                                                                                              |
| `authMethod`  | Yes      | `none`, `bearer`, `token`, `x-api-key`, `custom-header`, `query-param`, `bearer-customer`, `x-api-key-secret`, `json-body-field` |
| `authConfig`  | No       | Map of credential fields for the chosen auth method                                                                              |
| `networks`    | Yes      | Network IDs matching `mode`                                                                                                      |
| `mode`        | Yes      | `testnet` or `mainnet`                                                                                                           |
| `description` | No       | Optional text                                                                                                                    |

### Network IDs

| Mode      | Network IDs                                                        |
| --------- | ------------------------------------------------------------------ |
| `testnet` | `arc-testnet`, `base-sepolia`, `hyperevm-testnet`, `tempo-testnet` |
| `mainnet` | `base`, `hyperevm`, `tempo`                                        |

## Response

`201` with the standard envelope. `authConfig` values are masked as `"***"`.

```json theme={null}
{
  "data": {
    "id": "clx...",
    "name": "weather-api",
    "baseUrl": "https://api.example.com",
    "authMethod": "none",
    "networks": ["base-sepolia"],
    "mode": "testnet"
  },
  "meta": {
    "requestId": "req_...",
    "timestamp": "2026-01-01T00:00:00.000Z"
  }
}
```

## Related endpoints

* `GET /v1/services` — list
* `GET /v1/services/{id}` — get
* `PATCH /v1/services/{id}` — update
* `DELETE /v1/services/{id}` — delete (also deletes paywalls)

See the OpenAPI pages under **REST API** for full schemas.

<Card title="Create a paywall" icon="shield" href="/api-reference/create-a-paywall">
  Attach priced routes to this service.
</Card>
