# External API

Storylane now offers External API capabilities designed for advanced users, enabling seamless backend integration with our platform. These APIs provide enhanced functionality to help you streamline your demo management and improve security.

{% hint style="info" %}
The API is available to users on the Enterprise plan. If you're interested in testing the API or the Enterprise plan, please contact us at <support@storylane.io>.
{% endhint %}

#### Benefits of External API Integration

* **Access Published Demos:** List and track all published demos effortlessly.
* **Secure Demo Links:** Generate demo links with advanced security features like passcodes, expiration dates, and authentication codes.
* **Personalization:** Pass email parameters in demo links for tailored experiences.
* **Token Management:** Update links with secure access tokens.
* **Control Access:** View active links and disable them as required.

### Getting Started

To begin using the External API, you’ll need to request an API token from Storylane. Follow the steps below:

#### Step 1: Request an API Token and Workspace ID

1. Contact our support team at  <support@storylane.io> to request the following credentials:
   * **`workspace_id`** – Unique identifier for your workspace.
   * **`access_token`** – Your secure API access token.
2. Once your request is approved, you will receive both credentials securely.
3. Save these credentials securely, as they are required for authenticated API requests.

{% hint style="warning" %}
&#x20;We are not able to access `access_token` again if you lose it. We don’t store it on our side and have no access to it after we send it to you. Therefore, please store it securely.&#x20;
{% endhint %}

#### Step 2: Set Up and Authenticate Using Postman

* Access the **Storylane Public Postman Collection**: [Storylane Public Postman Collection](https://www.postman.com/team-storylane/storylane-public/collection/2zkg7jc/storylane-connect?action=share\&creator=17698894).
* In the Postman collection, locate and replace the following variables:
  * **`WORKSPACE_ID`** – Replace with the workspace ID provided by support.
  * **`ACCESS_TOKEN`**(The Bearer Auth Token) – Replace with **the API token** provided by support.

#### Step 3: Run and Verify the Data

Run the API endpoints in Postman and verify that you are successfully retrieving your company’s demo data.

<figure><img src="https://2431356420-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FN8hWd9k2Pbb6YSWO4pUQ%2Fuploads%2FUZHkcRqMjFF5q1wmgHMD%2Fimage.png?alt=media&#x26;token=b1e7f1e8-e1dd-4c94-979e-b615ba8aa463" alt="" width="375"><figcaption></figcaption></figure>

Here is an interactive demo demonstrating how to set up using Postman 👇

{% @storylane/embed subdomain="app" linkValue="jkzyb2hwbamc" url="<https://app.storylane.io/share/jkzyb2hwbamc>" %}

### **API Responses**

**1. All Published Demos**\
Use the endpoint to list all published demos in your workspace. A sample response:

```json
{
    "demos": [
         {
            "id": "4553c46a-43c7-41fd-8101-57904egeskw7a",
            "convert_cta": {
                "text": "Talk to Sales",
                "url": "https://storylane-security-review.my.salesforce-setup.com",
                "enabled": false
            },
            "created_at": "2026-01-22T11:26:14.732-12:00",
            "edited_at": "2026-01-22T12:35:55.589-12:00",
            "folder": null,
            "kind": "image",
            "links_count": 1,
            "name": "DemoHub x Salesforce",
            "published_at": "2026-01-22T12:35:55.589-12:00",
            "status": "published",
            "team_id": "d48e4b56-61f4-402e-abf4-219c85dd00ba",
            "user": {
                "id": "5b094482-be80-4b25-bd5f-7458efda2f0a",
                "email": "renee@storylane.io",
                "first_name": "Renee",
                "last_name": "Scrybalo"
            }
        },
        {
            "id": "fd81ad9a-aa56-478a-84b9-e81e9cbe782fa",
            "convert_cta": {
                "text": "Book a Demo",
                "url": "",
                "enabled": false
            },
            "created_at": "2026-01-22T09:43:28.796-12:00",
            "edited_at": "2026-01-22T09:48:22.218-12:00",
            "folder": null,
            "kind": "html",
            "links_count": 1,
            "name": "HubSpot + Storylane | Jan 22 4:43 PM",
            "published_at": "2026-01-22T09:46:02.522-12:00",
            "status": "amended",
            "team_id": "d48e4b56-61f4-402e-abf4-219c85dd00ba",
            "user": {
                "id": "5b094482-be80-4b25-bd5f-7458efda2f0a",
                "email": "renee@storylane.io",
                "first_name": "Renee",
                "last_name": "Scrybalo"
            }
        },
        ...
    ]
}
```

***

**2. Get Details on a Single Demo**\
Use the endpoint to fetch detailed information about a specific demo. A sample response:

```json
{
    "demo": {
        "id": "4553c46a-43c7-41fd-8101-57904ed6dad9",
        "chapter_menu": null,
        "chapters": [
            {
                "id": "5386c880-d642-4a4e-8929-4c3ed370731e",
                "name": "Default",
                "steps": [
                    {
                        "id": "0decf650-6627-442e-864e-194b5452b45c",
                        "audio_url": "",
                        "content": "<h2 style=\"text-align: center\"><strong>Sync Buyer Hub Properties now in Salesforce!</strong></h2><p style=\"text-align: center\">Learn how to integrate our new Demo Hub data with your Salesforce leads for deeper insights and more effective prospect tracking</p>",
                        "cta": "begin!",
                        "kind": "popup",
                        "secondary": null,
                        "transcription": null
                    },
                    {
                        "id": "0dbde31a-fd5f-4bee-afac-71670f623c5e",
                        "audio_url": "",
                        "content": "",
                        "cta": null,
                        "kind": "hotspot",
                        "secondary": null,
                        "transcription": null
                    }
                ]
            }
        ],
        "convert_cta": {
            "text": "Talk to Sales",
            "url": "https://storylane-security-review.my.salesforce-setup.com",
            "enabled": false
        },
        "created_at": "2026-01-22T11:26:14.732-12:00",
        "edited_at": "2026-01-22T12:35:55.589-12:00",
        "folder": null,
        "kind": "image",
        "links_count": 1,
        "name": "DemoHub x Salesforce",
        "published_at": "2026-01-22T12:35:55.589-12:00",
        "status": "published",
        "team": {
            "id": "d48e4b56-61f4-402e-abf4-219c85dd00b5",
            "name": "Renee S Team (:"
        },
        "user": {
            "id": "5b094482-be80-4b25-bd5f-7458efda2f0f",
            "email": "renee@storylane.io",
            "first_name": "Renee",
            "last_name": "Scrybalo"
        }
    }
}
```

***

**3. List Demo Links**\
Returns a response containing all links associated with a specific demo. A sample:

```json
{
    "links": [
        {
            "id": "e92cab1c-ccb1-46da-92dc-0c796859d4e3",
            "created_at": "2026-01-22T12:35:43.061-12:00",
            "default_link": true,
            "email_confirmation_required": false,
            "email_required": false,
            "expires_at": null,
            "name": "Default",
            "passcode": null,
            "recipient_email": null,
            "tokens": [],
            "updated_at": "2026-01-22T12:35:43.061-12:00",
            "url": "https://renee.storylane.io/share/g0gtnfqh9n1e",
            "user": {
                "id": "5b094482-be80-4b25-bd5f-7458efda2f0f",
                "email": "renee@storylane.io",
                "first_name": "Renee",
                "last_name": "Scrybalo"
            },
            "whitelist_email_domains": []
        }
    ]
}
```

***

**4. Create a New Demo Link**\
A sample response for getting the details of newly created demo links:

```json
{
    "link": {
        "id": "b8e449e5-979f-442f-a75d-68ae8b446f5c",
        "created_at": "2026-01-23T04:19:05.392-12:00",
        "default_link": false,
        "email_confirmation_required": false,
        "email_required": false,
        "expires_at": null,
        "name": "Zuzi",
        "passcode": null,
        "recipient_email": null,
        "tokens": [],
        "updated_at": "2026-01-23T04:19:05.392-12:00",
        "url": "https://renee.storylane.io/share/cm6la2wsqtwp",
        "user": {
            "id": "5b094482-be80-4b25-bd5f-7458efda2f0f",
            "email": "renee@storylane.io",
            "first_name": "Renee",
            "last_name": "Scrybalo"
        },
        "whitelist_email_domains": []
    }
}
```

***

**5. Update an Existing Demo Link**\
Returns a response with updated details of an existing demo link:

```json
{
    "link": {
        "id": "b8e449e5-979f-442f-a75d-68ae8b446f5a",
        "created_at": "2026-01-23T04:19:05.392-12:00",
        "default_link": false,
        "email_confirmation_required": false,
        "email_required": false,
        "expires_at": null,
        "name": "Zuzi",
        "passcode": null,
        "recipient_email": null,
        "tokens": [],
        "updated_at": "2026-01-23T04:19:05.392-12:00",
        "url": "https://renee.storylane.io/share/cm6la2wsqtwp",
        "user": {
            "id": "5b094482-be80-4b25-bd5f-7458efda2f0a",
            "email": "renee@storylane.io",
            "first_name": "Renee",
            "last_name": "Scrybalo"
        },
        "whitelist_email_domains": []
    }
}
```

### Additional Notes

* Ensure API tokens are stored securely and not shared publicly.

For further assistance, please contact <support@storylane.io>.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.storylane.io/integrations/integrations/external-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
