Skip to content

API Reference

Summary: This document provides a comprehensive reference for the STRIDE REST API. All endpoints are versioned and follow standard RESTful conventions.

Base URL: https://api.stride.com/v1

Authentication

All API requests must be authenticated using a Bearer token in the Authorization header, obtained via Google SSO login.

Authorization: Bearer <YOUR_JWT_TOKEN>

Tokens are issued after successful Google SSO authentication via the /auth/google endpoint.

Endpoints

1. Users

GET /users/{id}

Retrieves a specific user by their unique ID.

  • Parameters:

    • id (string, path, required): The UUID of the user.
  • Responses:

    • 200 OK: Successful response.
      {
          "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
          "email": "user@example.com",
          "role": "sales",
          "created_at": "2023-10-27T10:00:00Z"
      }
      
    • 404 Not Found: If the user with the specified ID does not exist.
      {
          "detail": "User not found"
      }
      

2. Content Assets

GET /assets

Retrieves a list of all content assets (case studies, decks, narratives, etc.)

  • Query Parameters:

    • tag (string, optional): Filter by tag (e.g., industry, stage, outcome).
    • q (string, optional): Search query (supports natural language).
  • Responses:

    • 200 OK: A list of content assets.
      [
          {
              "id": "asset-uuid-1",
              "title": "Fintech Exit Case Study",
              "type": "case_study",
              "tags": ["Fintech", "Exit", "2023"],
              "source": "Notion",
              "url": "https://notion.so/...",
              "created_at": "2025-06-01T10:00:00Z"
          }
      ]
      

POST /assets

Uploads or ingests a new content asset.

  • Request Body:

    {
        "title": "New Case Study",
        "type": "case_study",
        "source": "Drive",
        "url": "https://drive.google.com/...",
        "tags": ["SaaS", "Growth", "2024"]
    }
    
  • Responses:

    • 201 Created: Asset created successfully.
      {
          "id": "asset-uuid-2",
          "title": "New Case Study",
          "type": "case_study"
      }
      
    • 422 Unprocessable Entity: If the request body is invalid.

3. Tagging

POST /assets/{id}/tags

Applies tags to a content asset.

  • Request Body:

    {
        "tags": ["Fintech", "Exit", "2023"]
    }
    
  • Responses:

    • 200 OK: Tags applied successfully.
      {
          "id": "asset-uuid-1",
          "tags": ["Fintech", "Exit", "2023"]
      }
      

Searches content assets using natural language and filters.

  • Query Parameters:

    • q (string, required): Search query (e.g., "Fintech exits in 2023").
    • tag (string, optional): Filter by tag.
  • Responses:

    • 200 OK: Search results.
      [
          {
              "id": "asset-uuid-1",
              "title": "Fintech Exit Case Study",
              "tags": ["Fintech", "Exit", "2023"]
          }
      ]
      

5. Analytics

GET /analytics/usage

Returns usage statistics by content, tag, and user.

  • Responses:
    • 200 OK: Usage stats.
      {
          "most_viewed_assets": ["asset-uuid-1", "asset-uuid-2"],
          "top_tags": ["Fintech", "Growth"],
          "active_users": 42
      }
      

For a guided tour of the implementation, see the Code Walkthroughs.