Let's get you started with the API you'll use to run your app from anywhere

Getting started with your app's API takes two steps: enabling API access to get your endpoint and API key, and then running a GET request on the endpoint to understand what arguments your app can take when called remotely.

🚧

Early Access Only

The Summit API is still in testing. If you'd like to try it, please request access. Thank you!

Enabling API access

Using your app's API is almost as easy as sharing your app publicly! Just navigate to your app's project (board view), click Manage access in the top-right-hand corner, then the API tab, and toggle on API access for your app. If you haven't done so yet, you'll be asked to publish an initial version of your app. On the API tab, you'll find the endpoint and be able to manage API keys for that specific app.

12681268

Now that you have your endpoint and key, let's GET a little info about your app's configuration!

Getting app information

📘

Apps, Parameters, and Widgets, oh my!

A few definitions will help us through the next steps.

An app is a deployed project on Summit. Apps can be deployed as private, restricted (link-only), or public. Any of these modes can have API access enabled.

A parameter is created using a (tag)[doc:tags] inside a SEL expression. These parameters become input fields to apps hosted on Summit, and they also become arguments for your app when called through its endpoint (API).

A widget is what we call the interface into an app when using the API.

To get the details of your app and the parameters that are available, make a GET request.

import requests

# Replace with the API key you created in the first step.
api_key = "59144mt2323b51d2350244232"

# Replace with the API endpoint you copied in the first step.
api_url = f"https://api.usesummit.com/v1/org-slug/abc123/widget-slug?api_key={api_key}"

# NOTE: Instead of the api_key querystring argument, you may set the `x-api-key` header.

# Notice the .get method.
response = requests.get(api_url)

print(response.json())

If your app has no parameters, you will see a response that looks like this:

{
  "parameters": []
}

On the other hand, if your app has parameters, you'll see a response that looks like:

{
  "parameters": [
    {
      "default_value": 2500,
      "description": "What is your current monthly recurring revenue (MRR)?",
      "display_name": "Metrics > MRR",
      "format": "currency",
      "maximum_value": null,
      "minimum_value": null,
      "value_choices": null,
      "name": "mrr",
      "type": "free"
    },
    {
      "default_value": 8,
      "description": "How quickly is your monthly revenue growing?",
      "display_name": "Metrics > MRR Growth Rate",
      "format": "percentage",
      "maximum_value": null,
      "minimum_value": null,
      "value_choices": null,
      "name": "mrr_growth_rate",
      "type": "free"
    },
    {
      "default_value": 100000,
      "description": "How much are you looking to borrow?",
      "display_name": "Terms > Loan Amount",
      "format": "currency",
      "maximum_value": null,
      "minimum_value": null,
      "value_choices": null,
      "name": "loan_amount",
      "type": "free"
    },
    {
      "default_value": 50000,
      "description": "Initial cash available for the business.",
      "display_name": "Metrics > Cash Balance",
      "format": "currency",
      "maximum_value": null,
      "minimum_value": 0,
      "value_choices": null,
      "name": "cash_balance",
      "type": "free"
    },
    {
      "default_value": 125000,
      "description": "How much will you pay back in total?",
      "display_name": "Terms > Total Payback",
      "format": "currency",
      "maximum_value": null,
      "minimum_value": null,
      "value_choices": null,
      "name": "return_cap",
      "type": "free"
    },
    {
      "default_value": 12,
      "description": "What percentage of top-line revenue will you be sharing to make loan payments?",
      "display_name": "Terms > Revenue Share",
      "format": "percentage",
      "maximum_value": null,
      "minimum_value": 0,
      "value_choices": null,
      "name": "rev_share_pct",
      "type": "free"
    },
    {
      "default_value": 50000,
      "description": "Average monthly expenses to operate your business.",
      "display_name": "Metrics > Monthly Expenses",
      "format": "currency",
      "maximum_value": null,
      "minimum_value": null,
      "value_choices": null,
      "name": "monthly_burn",
      "type": "free"
    },
    {
      "default_value": 1.25,
      "description": "What is the multiple on the loan? For example, a 1.25 multiple will set the repayment on a $100k loan to $125k.",
      "display_name": "Terms > Repayment Multiple",
      "format": "number",
      "maximum_value": null,
      "minimum_value": null,
      "value_choices": null,
      "name": "repayment_multiple"
    }
  ]
}

This is a list of all of the parameters of your app. Pay special attention to the name attribute. This is the unique name of the argument that will be used in the next step.

📘

Is this step necessary?

You can use these get request details to dynamically populate your product UI or process that's utilizing this API.

If your API is static and you're always providing the same inputs, the GET request above is not necessary, making your integration even easier (you just need to call it!).