API Documentation

Access your data programmatically using our REST API

Getting Started

1. Get Your API Key

Navigate to your Profile page and click on the "API" tab to generate your API key.

2. Authentication

Include your API key in the Authorization header of every request:

Authorization: Bearer YOUR_API_KEY

3. Base URL

All API requests should be made to:

https://trends.smartestcrowd.com/api/v1/

Read Endpoints (GET)

GET /api/v1/me

Get the profile for the user that owns the API key: id, email, username, full name, bio, avatar URL, timezone, account timestamps, flags, mode, and active membership summary (plan_slug, plan_name, status) or null if none. Does not return your API key, password, or embedded photo blobs.

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/me
GET /api/v1/teams

Get all teams you are a member of.

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/teams
GET /api/v1/ideas

Get all ideas you have created.

Query parameters: page (default: 1), per_page (default: 50, max: 100), sort (default: created_at), order (default: desc).

sort must be one of: created_at, last_message_at, title, topic_id, mode. order is asc or desc. Ideas with no last message sort last when ordering by last_message_at.

The JSON response echoes the applied sort and order alongside ideas, total, and pagination fields.

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://trends.smartestcrowd.com/api/v1/ideas?page=1&per_page=20&sort=title&order=asc"
GET /api/v1/topics

Get all topics you have created or have ideas in.

Query Parameters: page (default: 1), per_page (default: 50, max: 100)

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/topics
GET /api/v1/tagged-items

Get all tagged items you created or in your teams.

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/tagged-items
GET /api/v1/decisions

Get all decisions you have access to.

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/decisions
GET /api/v1/decision-groups

Get all decision groups for your decisions.

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/decision-groups
GET /api/v1/decision-inputs

Get all decision inputs for your decisions.

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/decision-inputs
GET /api/v1/orgs

Get all organizations.

Query Parameters: page (default: 1), per_page (default: 50, max: 100)

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/orgs
GET /api/v1/competitors

Get all competitors.

Query Parameters: page (default: 1), per_page (default: 50, max: 100)

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/competitors
GET /api/v1/reports

Get all reports you can access. Query: access_type (all, team, consultant, team_or_consultant).

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/reports
GET /api/v1/reports/<report_id>/sections

Get all sections (notes) for a report.

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/reports/REPORT_ID/sections
GET /api/v1/tasks

Get tasks visible to you (created by you, assigned to you or your team, or attached to targets you can view).

Query Parameters: status (optional: open, in_progress, done, cancelled), limit (default: 100, max: 200), offset (default: 0)

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://trends.smartestcrowd.com/api/v1/tasks?status=open&limit=50"
GET /api/v1/tasks/<task_id>

Get a single task by ID. Returns 403 if you cannot see the task.

Show Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://trends.smartestcrowd.com/api/v1/tasks/TASK_UUID
GET /api/v1/watching/creators/opinions

Returns active opinions on concepts (idea_templates) from creators you watch on the Watching page: watchable types team or source (YouTube channel sources resolve to their creator team). Newest opinions first. Authenticate with Authorization: Bearer YOUR_API_KEY like other v1 routes.

Query parameters

  • tags — optional. One or more tag names (repeat the parameter or comma-separated). Tags are those you attached to creator watches (Watching → Creators).
  • tag_match — optional: or (default) or and.
  • limit — optional; default 200, max 500.

Responseopinions (array of opinion objects with id, stock_symbol, date, opinion (explanation text; null unless the API user has Pro membership or is a site admin), score, creator_site, creator_handle, subscriber_count) and meta (watched_creators, returned, limit, tag_match, unrecognized_tags).

Analytics — Successful v1 and session calls are aggregated in Admin → Analytics → APIs under the route label GET /api/watching/creators/opinions.

Session alias (same JSON): GET /api/watching/creators/opinions when logged in (browser cookie). Use fetch(url, { credentials: 'same-origin' }) from this site.

Errors400 for invalid tag_match or unknown tag names.

Show curl example (API key)
curl -s -H "Authorization: Bearer YOUR_API_KEY" \
  "https://trends.smartestcrowd.com/api/v1/watching/creators/opinions?tag_match=or&limit=100"

Write Endpoints (POST / PATCH)

POST /api/v1/reports

Create a report for an idea. Body: idea_id, title, string_key (required), template_id (optional).

PATCH /api/v1/reports/<report_id>

Update a report. Body: title, string_key (optional).

POST /api/v1/reports/<report_id>/sections

Create a report section (note). Body: title (required), summary, details, order_index, template_id (optional).

PATCH /api/v1/reports/<report_id>/sections/<section_id>

Update a report section. Body: title, summary, details, order_index (optional).

POST /api/v1/topics

Create a new topic.

Required fields: title

Optional fields: description, volume, growth, permission

Show Example
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "AI Agents", "description": "Autonomous AI agents", "volume": "1000", "growth": "25%"}' \
  https://trends.smartestcrowd.com/api/v1/topics
POST /api/v1/trends

Create a new trend. team_id is optional but requires admin or moderator role.

Option 1: Create trend with existing topic - Required: topic_id, labels (array), values (array)

Option 2: Create topic and trend together - Required: topic (object with title), labels (array), values (array)

Optional fields: team_id (requires admin/moderator role), topic.description, topic.volume, topic.growth, topic.permission

Show Examples

With existing topic:

curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"topic_id": "123-abc", "labels": ["Jan", "Feb", "Mar"], "values": [100, 150, 200], "team_id": "team-456"}' \
  https://trends.smartestcrowd.com/api/v1/trends

Create topic and trend together:

curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "topic": {
      "title": "AI Agents",
      "description": "Autonomous AI agents",
      "volume": "1000",
      "growth": "25%"
    },
    "labels": ["Jan", "Feb", "Mar"],
    "values": [100, 150, 200]
  }' \
  https://trends.smartestcrowd.com/api/v1/trends
POST /api/v1/orgs

Create a new organization.

Required fields: title, type

Valid types: business, organization, non_profit, group

Show Example
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "Acme Corp", "type": "business"}' \
  https://trends.smartestcrowd.com/api/v1/orgs
POST /api/v1/links

Create a new link with optional link targets.

Required fields: title, url

Optional fields: published_at (ISO date), link_targets (array)

Link target types: org, idea, trend, topic, decision_group

Show Example
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "AI Research Article",
    "url": "https://example.com/ai-article",
    "published_at": "2026-01-18T10:00:00Z",
    "link_targets": [
      {"target_type": "topic", "target_id": "topic-123"},
      {"target_type": "idea", "target_id": "idea-456"}
    ]
  }' \
  https://trends.smartestcrowd.com/api/v1/links
POST /api/v1/competitors

Create a new competitor.

Required fields: force_type, force_id

Optional fields: title, user_id, source_type, source_id, org_id

Force types: Org, Topic, Idea, Report

Source types: User, Link

Show Example
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "force_type": "Org",
    "force_id": "org-123",
    "title": "Main Competitor",
    "source_type": "User",
    "source_id": "user-456",
    "org_id": "org-123"
  }' \
  https://trends.smartestcrowd.com/api/v1/competitors
POST /api/v1/decision-groups

Create a new decision group. Requires access to the decision.

Required fields: decision_id, title

Optional fields: description, order_index (default: 0)

Show Example
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "decision_id": "decision-123",
    "title": "Market Analysis",
    "description": "Analysis of market conditions",
    "order_index": 1
  }' \
  https://trends.smartestcrowd.com/api/v1/decision-groups
POST /api/v1/decision-inputs

Create a new decision input. Requires access to the decision.

Required fields: decision_group_id, input_type, input_id

Optional fields: order_index (default: 0)

Input types: idea, report, competitor

Show Example
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "decision_group_id": "group-123",
    "input_type": "idea",
    "input_id": "idea-456",
    "order_index": 0
  }' \
  https://trends.smartestcrowd.com/api/v1/decision-inputs
POST /api/v1/ideas

Create a new idea.

Required fields: title, description, topic_id

Optional fields: contest_id, mode, is_custom, consultant_id, generated_by, inspired_by_id

Show Example
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "AI-Powered Analytics Platform",
    "description": "A platform that uses AI to analyze business data",
    "topic_id": "topic-123",
    "mode": "startups",
    "is_custom": false
  }' \
  https://trends.smartestcrowd.com/api/v1/ideas
POST /api/v1/tasks

Create a task attached to any object (idea, topic, report, note). When assigned to a team, the team webhook is pinged.

Required: target_type (idea, topic, report, note), target_id, title

Optional: description, prompt, status (default open), assignee_team_id, assignee_user_id, assigner_team_id, due_at (ISO datetime)

Show Example
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target_type": "idea",
    "target_id": "idea-123",
    "title": "Review draft report",
    "description": "Check tone and facts",
    "assignee_team_id": "team-456",
    "assigner_team_id": "team-789"
  }' \
  https://trends.smartestcrowd.com/api/v1/tasks
PATCH /api/v1/tasks/<task_id>

Update a task (status, title, description, prompt, assignment, due_at). Only if you can see the task. Assigning to a team triggers the team webhook.

Optional body fields: title, description, prompt, status, assignee_team_id, assignee_user_id, assigner_team_id, due_at

Show Example
curl -X PATCH -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "in_progress"}' \
  https://trends.smartestcrowd.com/api/v1/tasks/TASK_UUID

Response Format

All API responses are returned in JSON format.

Success Response

{
  "success": true,
  "count": 10,
  "data": [...]
}

Error Response

{
  "error": "Error message here",
  "message": "Additional details (optional)"
}

Rate Limits & Best Practices

  • • Keep your API key secure and never share it publicly
  • • Regenerate your API key immediately if it's compromised
  • • Use pagination for large datasets (ideas, topics)
  • • Cache responses when possible to reduce API calls
  • • Handle errors gracefully in your application

Need Help?

If you have questions or need assistance with the API, please contact support or visit our Profile page to manage your API key.