Algrow

Docs

Workspace

Folders, saved channels, alerts, and channel resolution.

Folders, saved channels, alerts, and channel resolution — the same primitives that power the web app dashboard. Use these to programmatically organize research, monitor channels for outliers, and resolve @handle/URL inputs to channel IDs.

GET/api/folders

List the authenticated user's folders with channel counts.

Response200
{
  "success": true,
  "count": 2,
  "folders": [
    {
      "id": 12,
      "name": "Cooking Research",
      "channel_count": 7,
      "created_at": "2026-03-15T10:30:00"
    }
  ]
}
Example
curl https://api.algrow.online/api/folders \
-H "Authorization: Bearer YOUR_API_KEY"

POST/api/folders

Create a new folder. Content-Type application/json.

Body

NameTypeRequiredDescription
namestringRequiredFolder name (1–50 chars, unique per user).

201 Created 400 Invalid name 403 Plan limit (Starter 15, Pro 50) 409 Name collision

Example
curl -X POST https://api.algrow.online/api/folders \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Tech Channels"}'

PATCH/api/folders/:id

Rename a folder. Body: {"name": "..."}.

200 Success 404 Folder not found 409 Name collision

Example
curl -X PATCH https://api.algrow.online/api/folders/12 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Renamed Folder"}'

DELETE/api/folders/:id

Delete a folder and unsave every channel in it. No Uncategorized fallback — the channels are removed entirely.

Response200
{ "success": true, "unsaved_channels": 5 }
Example
curl -X DELETE https://api.algrow.online/api/folders/12 \
-H "Authorization: Bearer YOUR_API_KEY"

GET/api/folders/:id/channels

List all channels in a folder with live 24h and 48h view/sub deltas. Sorted by save time descending.

200 Success 404 Folder not found

Example
curl https://api.algrow.online/api/folders/12/channels \
-H "Authorization: Bearer YOUR_API_KEY"

GET/api/folders/:id/outliers

Recent uploads from every channel in a folder, ranked by outlier score. Each video is scored against its own channel only, at the same age, so new uploads are not penalised for being new. Each video carries outlier_score, adjusted_score (steadied for very small channels; used for sorting), typical_views and breaking_out (how fast it is gaining views right now vs its own recent pace). Query params: days (default 7), min_score (adjusted, optional), sort (outlier default, views, recent), limit (default 100, max 500). Long-form only.

200 Success 404 Folder not found

Example
curl 'https://api.algrow.online/api/folders/12/outliers?days=7&min_score=2' \
-H "Authorization: Bearer YOUR_API_KEY"

POST/api/saved-channels

Save one or more channels into a folder. Hard cap of 30 channels per folder on all plans — if the request would exceed the cap, the entire save fails atomically (no partial save).

Body

NameTypeRequiredDescription
channel_idsarrayRequiredArray of YouTube channel IDs (UC...).
folder_idintegerRequiredTarget folder ID.

200 Success 400 Invalid IDs / folder 403 Folder cap exceeded

Example
curl -X POST https://api.algrow.online/api/saved-channels \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"channel_ids": ["UCxxxxxx", "UCyyyyyy"], "folder_id": 12}'

DELETE/api/saved-channels/:channel_id

Remove a saved channel from all of the user's folders.

Example
curl -X DELETE https://api.algrow.online/api/saved-channels/UCxxxxxx \
-H "Authorization: Bearer YOUR_API_KEY"

POST/api/saved-channels/move

Move a saved channel from one folder to another.

Body

NameTypeRequiredDescription
channel_idstringRequiredYouTube channel ID.
from_folder_idintegerRequiredSource folder ID.
to_folder_idintegerRequiredDestination folder ID.

No example for this one.

POST/api/channels/resolve

Resolve a YouTube @handle or channel URL to a canonical channel ID. Useful when you have user input and need to call other endpoints with a stable UC... id.

Body

NameTypeRequiredDescription
inputstringRequired@handle, https://youtube.com/@handle, https://youtube.com/channel/UC..., or a raw UC... id (returned unchanged).
Example
curl -X POST https://api.algrow.online/api/channels/resolve \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input": "@MrBeast"}'

GET/api/alerts

List the user's saved alerts. Alerts watch for channels matching specific criteria (e.g. new outliers, high growth) and surface them in /api/alerts/triggered.

Example
curl https://api.algrow.online/api/alerts \
-H "Authorization: Bearer YOUR_API_KEY"

POST/api/alerts

Create a new alert. The filter body mirrors the search/trends params (subscribers, views, etc.) plus an alert type.

201 Created 400 Invalid filters 403 Plan alert cap reached

Example
curl -X POST https://api.algrow.online/api/alerts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "New cooking outliers", "content_type": "longform", "filters": {"min_subs": 1000, "max_subs": 100000}}'

PATCH/api/alerts/:id

Update an alert's name, filters, or enabled state. Send any subset of fields.

Example
curl -X PATCH https://api.algrow.online/api/alerts/42 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled": false}'

DELETE/api/alerts/:id

Delete an alert. Triggered-channel history for the alert is also removed.

Example
curl -X DELETE https://api.algrow.online/api/alerts/42 \
-H "Authorization: Bearer YOUR_API_KEY"

GET/api/alerts/triggered

Channels that matched the user's saved alert filters in the last evaluation cycle (typically the last 24h). Use this as your “new matches” feed.

Query Parameters

NameTypeRequiredDefaultDescription
alert_idintegerOptional—Restrict to one alert. Omit to merge across all alerts.
pageintegerOptional1Page (1–20).
per_pageintegerOptional50Results per page (1–50).

No example for this one.

GET/api/alerts/outlier-status

Quick poll endpoint: returns a per-alert summary of how many new channels triggered each alert. Cheap to call repeatedly — use it to drive a notification badge without paginating through /api/alerts/triggered.

Example
curl https://api.algrow.online/api/alerts/outlier-status \
-H "Authorization: Bearer YOUR_API_KEY"