Descope Flows with SDKs

You can use the Descope management SDKs for common flow management operations like list/search, delete, import, and export. The management SDK requires a management key, which can be generated here.

Backend SDK

Install SDK

Terminal
npm i --save @descope/node-sdk

Import and initialize SDK

import DescopeClient from '@descope/node-sdk';
try{
    //  baseUrl="<URL>" // When initializing the Descope client, you can also configure the baseUrl ex: https://auth.company.com  - this is useful when you utilize a custom domain within your Descope project.
    const descopeClient = DescopeClient({ projectId: '__ProjectID__' });
} catch (error) {
    // handle the error
    console.log("failed to initialize: " + error)
}

List Flows

Note

You can also use our List/Search Flows API to list or search Flows in your project.

This operation lists flows in the project. Optionally filter by flow IDs, or send an empty request body to list all flows.

// Args:
//   None

const resp = await descopeClient.management.flow.list()
if (!resp.ok) {
  console.log("Failed to list flows.")
  console.log("Status Code: " + resp.code)
  console.log("Error Code: " + resp.error.errorCode)
  console.log("Error Description: " + resp.error.errorDescription)
  console.log("Error Message: " + resp.error.errorMessage)
}
else {
  console.log("Successfully listed flows.")
  console.log(resp.data)
}

Delete Flows

This operation deletes one or more flows by ID. This action is irreversible.

// Args:
//   flowIds (List[str]): The flow IDs to delete.
const flowIds = ["flow-1", "flow-2"];

const resp = await descopeClient.management.flow.delete(flowIds)
if (!resp.ok) {
  console.log("Failed to delete flows.")
  console.log("Status Code: " + resp.code)
  console.log("Error Code: " + resp.error.errorCode)
  console.log("Error Description: " + resp.error.errorDescription)
  console.log("Error Message: " + resp.error.errorMessage)
}
else {
  console.log("Successfully deleted flows.")
}

Export Flow

Note

You can also use our Export Flow API to export a Flow.

This operation exports a flow (and its screens) by flow ID.

// Args:
//   flowId (str): The flow ID to export.
const flowId = "sign-up-or-in";

const resp = await descopeClient.management.flow.export(flowId)
if (!resp.ok) {
  console.log("Failed to export flow.")
  console.log("Status Code: " + resp.code)
  console.log("Error Code: " + resp.error.errorCode)
  console.log("Error Description: " + resp.error.errorDescription)
  console.log("Error Message: " + resp.error.errorMessage)
}
else {
  console.log("Successfully exported flow.")
  console.log(resp.data)
}

Import Flow

Note

You can also use our Import Flow API to import a Flow.

This operation imports a flow. This overrides the existing flow for the given ID.

// Args:
//   flowId (str): The flow ID to import as.
//   flow (object): The flow definition to import.
//   screens (list): Optional screens to import with the flow.
const flowId = "sign-up-or-in";
const flow = {
  name: "Sign Up or In",
  description: "Sign up or in flow",
  disabled: false,
};
const screens = [];

const resp = await descopeClient.management.flow.import(flowId, flow, screens)
if (!resp.ok) {
  console.log("Failed to import flow.")
  console.log("Status Code: " + resp.code)
  console.log("Error Code: " + resp.error.errorCode)
  console.log("Error Description: " + resp.error.errorDescription)
  console.log("Error Message: " + resp.error.errorMessage)
}
else {
  console.log("Successfully imported flow.")
  console.log(resp.data)
}
Was this helpful?

On this page