Partner API: create and manage customer workspaces
Create customer workspaces from an industry template, set them up with a workspace token, and manage users, billing and commission from your own system.
The Partner API connects your own system to meetergo. Create a customer workspace when an order is paid, start it from an industry template, set it up through the Platform API, and manage its users. Each call follows the same rules as the Partner portal.
New to the API? Follow Customer workspace with a booking page in 10 minutes for the whole flow with curl and Node. Prefer to work from Claude or ChatGPT? The same key works with the meetergo MCP server. See Set up customer workspaces with Claude or ChatGPT via meetergo MCP.
You create customer workspaces yourself, in the portal or via the API. meetergo does not create workspaces for you. The API creates the workspace, the first admin, and a starter booking page. You then set up meeting types, availability, and branding inside the workspace, or via the API with an industry template and the workspace token.
Before you begin
- Your Partner company has approved commercial terms, and you accepted the current Partner Terms.
- You are an admin of your Partner company.
- For Partner pays meetergo, the Partner billing setup is complete. See Create and set up a customer workspace.
Create an API key
- Open Partner portal > API.
- Select Create API key and give the key a name, for example "Production".
- Copy the key. It starts with
mgp_and is shown only once.
Store the key as a secret on your server. Never put it in a website or app: anyone with the key can create workspaces billed to you.
The key acts as the Partner admin who created it. It stops working when you revoke it, or when that person is no longer an admin of your Partner company. You can have two active keys, so you can switch to a new key before revoking the old one.
Authentication
Send the key as a bearer token on every request:
Authorization: Bearer mgp_...
Base URL: https://api.meetergo.com
All endpoints are in the OpenAPI spec at api.meetergo.com/spec/v2 under the tag Partner API.
Endpoints
| Method | Path | Purpose |
|---|---|---|
POST | /v4/partner/customers | Create a customer workspace |
GET | /v4/partner/customers | List your customers |
GET | /v4/partner/customers/{companyId} | Read one customer |
PATCH | /v4/partner/customers/{companyId} | Rename a customer or change who contacts them |
POST | /v4/partner/customers/{companyId}/token | Get a workspace token for the Platform API |
GET | /v4/partner/customers/{companyId}/users | List the customer's users |
POST | /v4/partner/customers/{companyId}/users | Invite users |
DELETE | /v4/partner/customers/{companyId}/users/{userId} | Remove a user or cancel an invitation |
GET | /v4/partner/billing/summary | Seats, estimated monthly net and discount |
GET | /v4/partner/commissions | Refer commission entries |
GET | /v4/partner/commissions/summary | Held, available and paid commission |
Create a customer
POST /v4/partner/customers
curl -X POST https://api.meetergo.com/v4/partner/customers \
-H "Authorization: Bearer $MEETERGO_PARTNER_KEY" \
-H "Content-Type: application/json" \
-d '{
"requestId": "6f1c2a8e-3b4d-4e5f-8a9b-0c1d2e3f4a5b",
"companyName": "Friseur Muster",
"adminFirstName": "Max",
"adminLastName": "Muster",
"adminEmail": "max@friseur-muster.de",
"language": "de",
"timezone": "Europe/Berlin",
"billingResponsibility": "partner",
"suiteTier": "suite",
"communicationOwner": "partner",
"contactConsentConfirmed": true,
"templateKey": "beauty"
}'
| Field | Required | Meaning |
|---|---|---|
requestId | Yes | A UUID you create once per order. Makes retries safe. |
companyName | Yes | Name of the customer's company. |
adminFirstName, adminLastName | Yes | Name of the customer's first admin. |
adminEmail | Yes | Receives the invite. Must not have a meetergo account yet. |
language | Yes | Language for emails and the booking page, for example de. |
timezone | Yes | For example Europe/Berlin. |
billingResponsibility | Yes | partner: on your monthly Partner invoice. customer: the customer pays meetergo. |
suiteTier | For partner | light, suite or premium. |
communicationOwner | Yes | partner or meetergo: who contacts the customer about their account. |
contactConsentConfirmed | Yes | Must be true. Confirms the customer agreed to be set up and contacted. |
templateKey | No | Start from an industry template. See below. |
partnerRetailPricePerSeatEur | No | Your own price per seat, for your overview only, for example "19.00". |
extraEmails | No | More team members to invite, up to 100. |
The response contains:
| Field | Meaning |
|---|---|
customer | The new customer, including companyId and bookingPageUrl. |
setupStatus | ready, or attention_required when something needs a look. |
setupAttention | What needs a look, for example booking_page_setup_failed. |
adminInviteDelivery | sent or failed. |
additionalInvites | Result for extraEmails. |
template | { key, version, meetingTypes: [{ id, name, slug }] }, or null without a template. |
The customer's admin gets an invite email and sets their own password. The booking page takes bookings right away, before they accept.
Create requestId once per order and store it. If a request times out, send it again with the same requestId and the same body. You get the existing customer back instead of a second workspace.
Industry templates
With templateKey, the workspace starts with that industry's meeting types, weekly opening hours, email reminders and, where useful, a routing form. Template content is in German.
templateKey | For |
|---|---|
beauty | Beauty and hair salons |
craftsmen | Trades and craft businesses |
insurance | Insurance brokers |
consulting | Consultants |
Without templateKey, the workspace gets one starter booking page. The template is applied once at creation. Change it afterwards with a workspace token.
List and read customers
curl "https://api.meetergo.com/v4/partner/customers?limit=50&offset=0" \
-H "Authorization: Bearer $MEETERGO_PARTNER_KEY"
curl https://api.meetergo.com/v4/partner/customers/{companyId} \
-H "Authorization: Bearer $MEETERGO_PARTNER_KEY"
The list returns your active customers, newest first. limit is 1 to 100. hasMore tells you whether another page exists.
Update a customer
Send companyName, communicationOwner, or both. The response is the updated customer.
curl -X PATCH https://api.meetergo.com/v4/partner/customers/{companyId} \
-H "Authorization: Bearer $MEETERGO_PARTNER_KEY" \
-H "Content-Type: application/json" \
-d '{ "companyName": "Friseur Muster GmbH", "communicationOwner": "meetergo" }'
Set up a workspace with a workspace token
A workspace token lets your system configure one customer workspace through the normal Platform API: meeting types, availability, booking page, routing forms and more.
Get a token
curl -X POST https://api.meetergo.com/v4/partner/customers/{companyId}/token \
-H "Authorization: Bearer $MEETERGO_PARTNER_KEY"
{
"token": "mgw_...",
"tokenType": "Bearer",
"companyId": "3f2b...",
"expiresAt": "2026-10-01T10:00:00.000Z",
"expiresIn": 3600
}
Use it
Send the token instead of your mgp_ key:
curl https://api.meetergo.com/v4/meeting-type \
-H "Authorization: Bearer $MEETERGO_WORKSPACE_TOKEN"
- It works for exactly this one customer workspace.
- It acts with your Partner admin access in that workspace, like Open workspace in the portal.
- Do not send the
x-meetergo-api-user-idheader. Requests with it are rejected.
Refresh it
The token is valid for 1 hour. To continue, request a new one with your mgp_ key. There is no refresh token.
What a workspace token cannot do
These return 403:
- create API keys or personal access tokens in the customer workspace
- anything that messages the customer's contacts: WhatsApp, SMS, email sends, newsletters and Mira outbound messages
- internal dashboard endpoints (
/rpc)
The customer stays in control
Every request with a workspace token is recorded. The customer's admins see Your partner (name) has API access under Settings > Developer, with your recent API changes.
They can revoke this access and restore it any time. While it is revoked, getting a token and every existing token return 403 with a message that the customer revoked Partner API access. Dashboard access through Open workspace is managed separately. See Partner access, handover, and revocation.
Manage customer users
The same rules apply as in Manage users. See Manage customer users and billable seats.
# List users
curl https://api.meetergo.com/v4/partner/customers/{companyId}/users \
-H "Authorization: Bearer $MEETERGO_PARTNER_KEY"
# Invite 1 to 100 users
curl -X POST https://api.meetergo.com/v4/partner/customers/{companyId}/users \
-H "Authorization: Bearer $MEETERGO_PARTNER_KEY" \
-H "Content-Type: application/json" \
-d '{ "emails": ["anna@friseur-muster.de"] }'
# Remove a user or cancel a pending invitation
curl -X DELETE https://api.meetergo.com/v4/partner/customers/{companyId}/users/{userId} \
-H "Authorization: Bearer $MEETERGO_PARTNER_KEY"
- The list returns
companyNameanditems. Each item hasid,name,email,type,isAdmin,status(activeorpending) andbillable. - Invites return
processedEmails,unprocessedEmailsanddeliveryFailedEmails. Invited users get the normal meetergo invite email. You never set passwords. - To retry a failed delivery, send the same address again.
- Removing returns
removedUserIdandremovedStatus.
Billing and commission
| Endpoint | Returns |
|---|---|
GET /v4/partner/billing/summary | The numbers from the portal's Billing tab: seats, estimated monthly net and discount. |
GET /v4/partner/commissions?limit=&offset= | Your Refer commission ledger entries. |
GET /v4/partner/commissions/summary | Held, available and paid totals in cents, EUR. |
See Refer commission ledger and payouts.
Embed the booking page
Put the returned bookingPageUrl on the customer's website:
<div
style="min-width:330px"
class="meetergo-iframe"
data-src="{bookingPageUrl}"
></div>
<script src="https://cdn.meetergo.com/v4/integration.js"></script>
Errors
Errors return JSON with statusCode and message.
| Status | Meaning |
|---|---|
| 400 | The body is invalid. message is a list of field: problem. |
| 401 | The key or token is missing, wrong, expired or revoked, or the key's creator is no longer an admin. |
| 403 | Not allowed: the customer revoked Partner API access, the workspace token cannot use this route, your Partner permissions do not allow it, your Partner access is inactive, or the current Partner Terms are not accepted yet. |
| 404 | The customer does not exist or is not managed by you. |
| 409 | Conflict: the requestId was used with a different body, the email already has an account, or Partner billing is not set up. |
| 429 | Too many requests. Wait a moment and retry with the same requestId. |
Revoke a key
Open Partner portal > API and select Revoke next to the key. Requests with it fail immediately, and so do workspace tokens created with it. Customers you already created are not affected.
Related articles
Was this article helpful?
Let us know if this article answered your questions.