CONNECT APP
Build with Arlo
Training Management Software
Learning & Education
- API key
MCP
Give your agent Arlo tools
Every Arlo action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Arlo account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "arlo",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Create Event:
const result = await mcp.callTool({
name: "arlo-create-event",
arguments: {
templateCode: "Template Code",
sessions: "Sessions",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "arlo",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Create Event:
result = await session.call_tool("arlo-create-event", {
"templateCode": "Template Code",
"sessions": "Sessions",
})SDK
Run Arlo actions from your backend
Connect a user's Arlo account once, then run Create Event on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "arlo-create-event",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
arlo: { authProvisionId: "apn_xxxxxxx" },
templateCode: "Template Code",
sessions: "Sessions",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="arlo-create-event",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"arlo": {"authProvisionId": "apn_xxxxxxx"},
"templateCode": "Template Code",
"sessions": "Sessions",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "arlo-create-event",
"configured_props": {
"arlo": { "authProvisionId": "apn_xxxxxxx" },
"templateCode": "Template Code",
"sessions": "Sessions"
}
}'TOOLS
Arlo actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Create Event
actionCreate a new scheduled Arlo Event by submitting an event import request. Provide the parent templateCode(not its numeric ID) and one or more sessions. The Arlo API processes this asynchronously and returns anAsyncTaskID; the created event starts inDraftstatus. Run List Event Templates to find the templateCode. Example: call withtemplateCode: "SP1",sessions: '[{"Name":"Day 1","StartDateTime":"2026-09-15T09:00:00+12:00","EndDateTime":"2026-09-15T17:00:00+12:00"}]'to schedule one session under that template. See the documentation.Writev0.0.2 -
Create Presenter
actionCreate a new Arlo contact record to be used as a presenter. FirstName, LastName, and Email are required. Returns the created contact including its ID. Example: call withfirstName: "Kevin",lastName: "Malone",email: "kevin.malone@example.com"to create a new active contact and get back itsContactID. See the documentation.Writev0.0.2 -
Get Event
actionRetrieve the full detail for a single Arlo Event by its ID. Run List Events first to find a valideventId. Example: call witheventId: "4"to get that event's fullName,Code,StartDateTime,FinishDateTime,Status, and venue/presenter links. See the documentation.Read-onlyv0.0.2 -
Get Registration
actionRetrieve full registration plus attendee/contact detail for a single registration by its ID. Run List Registrations first to find a validregistrationId. Example: call withregistrationId: "3"to get that registration'sStatus,CreatedDateTime, and attendeeContact(name, email). See the documentation.Read-onlyv0.0.2 -
List Event Templates
actionList Arlo EventTemplate (course) records. Use this first to discover the templateCodeandTemplateIDvalues needed by Create Event and List Events. Optionally filter by status. Results are paged (seelimit/skip); if the page comes back full, call again with a higherskipfor more. Usefieldsto shrink the response for large template lists. Example: call withstatus: "Active"to get up to 100 active templates withTemplateID,Code,Name. See the documentation.Read-onlyv0.0.2 -
List Events
actionList Arlo Event (scheduled session) records, optionally filtered by status (the Arlo API does not support filtering this collection by parent event template). Results are paged (seelimit/skip); if the page comes back full, call again with a higherskipfor more. Usefieldsto shrink the response for large event lists. Example: call withstatus: "Active",limit: 50to get up to 50 active events withEventID,Name,Code,StartDateTime. See the documentation.Read-onlyv0.0.2 -
List Presenters
actionList Arlo contact records that serve as presenters. NOTE: the Arlo Contacts collection has no dedicated 'is presenter' filter, so this returns contact records and callers should filter by tag/code externally. Results are paged (seelimit/skip); if the page comes back full, call again with a higherskipfor more. Usefieldsto shrink the response for large contact lists. Example: call withstatus: "Active",limit: 50to get up to 50 active contacts withContactID,FirstName,LastName,Email. See the documentation.Read-onlyv0.0.2 -
List Registrations
actionList Arlo registration records with embedded attendee/contact detail, optionally filtered by event. Run List Events first to obtain aneventId. Results are paged (seelimit/skip); if the page comes back full, call again with a higherskipfor more. Usefieldsto shrink the response — registration lists can be very large (thousands of records) and each record is verbose. Example: call witheventId: "4",limit: 50to get up to 50 registrations for event 4 withRegistrationID,Status,Contact. See the documentation.Read-onlyv0.0.2 -
List Venues
actionList Arlo venue records. Use the returnedVenueIDvalues when specifyingVenueDetailsin Create Event sessions. Optionally filter by status. Results are paged (seelimit/skip); if the page comes back full, call again with a higherskipfor more. Usefieldsto shrink the response for large venue lists. Example: call withstatus: "Active"to get up to 100 active venues withVenueID,Name,Status. See the documentation.Read-onlyv0.0.2 -
Update Presenter
actionUpdate an existing Arlo presenter (contact) record. Only the fields you provide are changed (applied as a partial PATCH diff). Run List Presenters first to find a validpresenterId. Example: call withpresenterId: "102",email: "jim.halpert@athlead.com"to change just that contact's email and leave all other fields untouched. See the documentation.Writev0.0.2
No Arlo triggers are available yet.
MULTI-APP
Use Arlo with other popular apps
Most products don't stop at one integration. Pair Arlo with the other apps your users rely on, and ship use cases that span both.
- App slug
- arlo
- Authentication
- API key
- Categories
- Learning & Education
- Actions
- 10
- Triggers
- 0
- API proxy
- Not available