# Customize an API

URL: /products/api/customize · Id: `page:products/api/customize`

> What a Startup chooses for its API, per Verb and per Publication, while routes, packages, docs and errors keep compiling from the declaration.

A [Startup](/business/nouns/startup) chooses which [Verbs](/business/nouns/verb) its API sells, what runs each one, and the names its [Customers](/business/nouns/customer) see. Routes, packages, docs and errors keep compiling from those choices.

## Which Verbs a Customer may call
`verbs` in the [Product](/business/nouns/product) file lists what a Customer may call. Leaseline declares a `Lease` [Noun](/business/nouns/noun) and sells four of its Verbs:

```mdx title="products/pro.mdx"
---
$type: [App, API]
nouns: [Lease]
verbs: [Lease.list, Lease.get, Lease.renew, Lease.notify]
---
No renewal slips past its date.
```

The published OpenAPI document, SDK and MCP tool list carry only those Verbs. Operator Verbs such as [`Offer.publish`](/business/nouns/offer/publish) and [`Period.close`](/business/nouns/period/close) stay out, so a Customer's [Agent](/business/nouns/agent) spends no context on calls it cannot make.

## What runs each Verb
The [Function](/business/nouns/function) behind a Verb can be code, a model, an Agent or a credentialed [Human](/business/nouns/human), and callers see no difference. Leaseline's `Lease.renew` is code, and its [Success Manager](/agents/customer/success-manager) agent writes each renewal notice.

A Verb can be published before any Function exists. It answers with a price, and each call counts toward building it.

## The names Customers see
Every name on the customer plane is a field of the [Publication](/business/nouns/publication):

| Field | At Leaseline |
| --- | --- |
| `api` | `https://leaseline.app/api`, with `api.leaseline.app` pinned as its host |
| `mcp` | `https://leaseline.app/mcp` |
| `docs` | `https://leaseline.app/docs` |
| `statusPage` | `https://leaseline.app/status` |
| `portal` | `https://leaseline.app/portal` |
| `packages` | `leaseline`, for `npm install` and `pip install` |
| `envPrefix` | `LEASELINE_`, so code reads `LEASELINE_API_KEY` |
| `webhookHeader` | `Leaseline-Signature` |
| `errorNamespace` | `https://leaseline.app/errors` |

The path form needs nothing beyond the canonical [Domain](/business/nouns/domain), and the `api.` host serves the same API. Once a Customer holds an address, it never changes: a new Domain arrives as an alias, and a rebrand redirects.

A restyle compiles a new Publication from the [Brand](/business/nouns/brand) and leaves the API version alone. [What Customers see](/code/builders/software/publication) has every field.

## Which shapes it speaks
An [Interface](/business/nouns/interface) can also speak an outside [Standard](/business/nouns/standard), such as SCIM for a Customer's directory. The Startup maps the Standard's operations onto its own Verbs and writes no translation code. [Standards your API speaks](/products/api/standards) lists them.