---
title: "Using Concierge via the Edge API"
source_url: https://help.chilipiper.com/hc/en-us/articles/30935152032275-Using-Concierge-via-the-Edge-API
article_id: 30935152032275
updated_at: 2026-04-28T07:23:42Z
---

## Who can use this feature?

Available on All Products or Routing & Scheduling

Available to Only Admins

[Billing Center](https://fire.chilipiper.com/fire/admin/billing/overview) [Get a Demo](https://www.chilipiper.com/request-demo?utm_source=zendesk&utm_medium=help-center&utm_campaign=chili-hub)

The **Edge API** lets you run a Concierge router from outside the Chili Piper UI – server-side, from a backend agent, or from a hybrid embed. There are two ways to use it:

  * **Return a booking URL** that you redirect the lead to (the embed pattern);
  * **Schedule a meeting programmatically** without any UI (the no-UI pattern).



Both call the same routing endpoint with an API token; the difference is whether you pass an `interval`.

* * *

#### Table of Contents

  * Prerequisites
  * Step 1: Generate an API Token
  * Step 2: Pick an Access Pattern
  * Option A: Return a Booking URL
  * Option B: Schedule Programmatically
  * Qualify a Lead Without Scheduling
  * Body Fields and Triggers
  * Share Instructions with Your Developer
  * Good to Know



* * *

## Prerequisites

Before setting up the Edge API, confirm the following:

  * You have a **Concierge router** with one of these triggers configured: **Third-party Form is Submitted** , **Button is clicked in-app** , or **Router link is clicked or Router link form is submitted** ;
  * A user with the **Admin** role in Chili Piper is available to generate the API token in Command Center.



**⚠️ Warning:** Only users with the **Admin** role can generate API tokens in Command Center. Workspace Managers do not have access to the credentials page.

* * *

## Step 1: Generate an API Token

  1. Go to [Command Center](https://fire.chilipiper.com/admin-center) and navigate to the **Credentials** page;
  2. Click **Generate Token** ;
  3. Select the **Concierge.schedule** permission;  
![](https://help.chilipiper.com/hc/article_attachments/51196873104787)
  4. Name the token to match the router you are using;
  5. Copy the token **immediately** – it is only shown **once** and **cannot** be retrieved later.



**⚠️ Warning:** Store your API token securely. If you lose it, you will need to generate a new one. Tokens cannot be viewed again after creation.

* * *

## Step 2: Pick an Access Pattern

Pattern | When to use | What you pass | What you get back  
---|---|---|---  
Return a booking URL | You can redirect the lead to a Chili Piper page to complete scheduling |  `form` data (no `interval`) | A `routingLink` to redirect the lead to  
Schedule programmatically | You need to book the meeting without sending the lead through any UI |  `form` data **plus** `interval` | Available `startTimes` plus a `routingId` for the second call  
  
Both patterns POST to the same endpoint:
    
    
    https://fire.chilipiper.com/api/fire-edge/v1/org/concierge/routers/[routerSlug]/rest

Authenticate with your API token in the `Authorization` header:
    
    
    Authorization: Bearer ADD_TOKEN_HERE

You can also click **Copy** on the **Custom API** tab inside the router's **Booking Page** settings to copy the URL and a starter request body.

![](https://help.chilipiper.com/hc/article_attachments/50861501393171)

* * *

## Option A: Return a Booking URL

Use this when the lead can be redirected to a Chili Piper page to pick a slot and book.

**Request:**
    
    
    {
      "form": {
        "PersonEmail": "lead@example.com",
        "PersonFirstName": "Jamie"
      },
      "options": {
        "trigger": "InAppButton"
      }
    }

**Response (key fields):**
    
    
    {
      "routeId": "9413f879-...",
      "routingLink": "https://your-tenant.chilipiper.com/concierge-router/[routerSlug]/routing/9413f879-...",
      "schedulingAllowed": true,
      "assignment": { "userId": "...", "type": "user" }
    }

Redirect the lead to `routingLink` to complete the booking.

* * *

## Option B: Schedule Programmatically

Use this when no Chili Piper UI is involved.

This is a two-step flow.

### Step 1: Route and get available slots
    
    
    {
      "form": {
        "PersonEmail": "lead@example.com",
        "PersonFirstName": "Jamie"
      },
      "options": {
        "trigger": "InAppButton"
      },
      "interval": {
        "startsAt": "2026-04-14T00:00:00Z",
        "duration": "7 days"
      }
    }

The response includes `schedulingData` with `startTimes`:
    
    
    {
      "routeId": "9413f879-...",
      "schedulingAllowed": true,
      "schedulingData": {
        "meetingTypeRef": { "id": "..." },
        "duration": "1800000 milliseconds",
        "startTimes": [
          { "startTime": "2026-04-14T17:00:00Z", "attendees": [...] },
          { "startTime": "2026-04-14T17:30:00Z", "attendees": [...] }
        ]
      }
    }

### Step 2: Book a Slot
    
    
    {
      "startTime": "2026-04-14T17:00:00Z"
    }

![](https://help.chilipiper.com/hc/article_attachments/50861501393939)

**⚠️ Warning:** A routing session is single-use. If the schedule call fails, call the routing endpoint again to get a new session.

* * *

## Qualify a Lead Without Scheduling

  * Confirm a lead is routable;
  * See which user they would be assigned to;
  * Decide whether to surface a scheduler.



No routing session is consumed until scheduling occurs.

* * *

## Body Fields and Triggers

Trigger | What to send as `form` keys  
---|---  
**Third-party Form** | Form Field Names from your form mapping  
**In-app Button** | Data Field names (e.g., `PersonEmail`)  
**Router Link** | Field names from the Router link form  
  
![](https://help.chilipiper.com/hc/article_attachments/50861471450387)

![](https://help.chilipiper.com/hc/article_attachments/50861471450771)

![](https://help.chilipiper.com/hc/article_attachments/50861471451411)

**Note:** Field names may differ based on your tenant configuration. Always refer to the Custom API tab.

**Always pass**`**options.trigger**`**.**

  * `ThirdPartyForm`
  * `InAppButton`
  * `RouterLink`



* * *

## Share Instructions with Your Developer

If another team member is implementing the API integration, you can use the **Share Instructions** button in the Custom API tab.

  * The endpoint URL;
  * Token generation steps;
  * A link to Command Center;
  * A link to this support article.



* * *

## Good to Know

  * The Edge API works with all supported triggers;
  * API tokens are shown only once;
  * Only Admins can generate tokens;
  * Scope each token to a single router;
  * Tokens must be created in Command Center;
  * Routing sessions are single-use.
