Study · Muse connector

Intoola Study connector for Muse

API documentation · Version 1.0 · Last Updated: September 19, 2026

Overview

Intoola Study turns a student's own course materials into personalized study resources. The Muse connector lets a Muse user ask Muse to create a practice exam, flashcards, or a study guide from study material they provide, for example “Create a practice exam from these lecture notes using Intoola.”

Requirements. The user needs an Intoola account (sign in with Google) and an active paid Intoola Study subscription. The subscription is verified on Intoola's servers on every request. Without one, the API returns HTTP 402 with subscription_required and a link to subscribe. Subscribing is done on intoola.com, not inside Muse.

The connector only works with text sent in the request. It cannot read a user's saved materials, Google Classroom, Google Drive, or Canvas/Brightspace data. See the Privacy Policy (Section 3.15) for how data is handled.

Endpoints

PurposeURL
API base URLhttps://socrian.socrianstudyassistant.workers.dev
OpenAPI 3.1 description/muse/v1/openapi.json
OAuth server metadata (RFC 8414)/.well-known/oauth-authorization-server
AuthorizationGET /oauth/authorize
TokenPOST /oauth/token
Revocation (RFC 7009)POST /oauth/revoke
Subscription statusGET /muse/v1/status
ActionsPOST /muse/v1/actions/create_practice_exam, create_flashcards, create_study_guide

Authentication

OAuth 2.0 authorization code flow with PKCE (S256, required). Intoola never handles a password: the user signs in with Google on an Intoola-hosted page and then approves the connection.

  • Authorization request: response_type=code, client_id, redirect_uri (must exactly match a registered https URI), state, code_challenge, code_challenge_method=S256, optional scope.
  • Token request: grant_type=authorization_code with code, code_verifier, and redirect_uri; client authentication by HTTP Basic or client_secret in the body.
  • Tokens: opaque bearer access token (1 hour) and refresh token (30 days). Refresh tokens rotate on each use; replaying a rotated token revokes the grant. Send Authorization: Bearer <access_token> on API calls.
  • Scopes: study:generate (create practice exams, flashcards, and study guides) and account:status (see whether the subscription is active).

Actions

All actions take a JSON body and return JSON. Unknown fields are rejected. An optional Idempotency-Key header (8–128 characters) makes retries safe: a repeated request replays the first result instead of generating again.

ActionParametersReturns
create_practice_exammaterial_text (required, 40–50,000 chars); num_questions 5–25 (default 20); difficulty easy | medium | hard | mixed; additional_instructions (max 500 chars)exam.questions[] with type, question, optional choices[], and answer_and_explanation
create_flashcardsmaterial_text; num_flashcards 5–40 (default 25); additional_instructionsflashcards.cards[] with question and answer
create_study_guidematerial_text; additional_instructionsstudy_guide.content (Markdown)

Example request:

POST /muse/v1/actions/create_flashcards
Authorization: Bearer <access_token>
Content-Type: application/json

{ "material_text": "Photosynthesis converts light energy into chemical energy ...", "num_flashcards": 10 }

Example response:

{
  "action": "create_flashcards",
  "flashcards": { "card_count": 10, "cards": [ { "number": 1, "question": "...", "answer": "..." } ] },
  "truncated": false,
  "generated_by": "Intoola Study",
  "request_id": "..."
}

Errors

Errors use the shape { "error": { "code", "message" }, "request_id" }.

HTTPCodeMeaning
400invalid_parametersA parameter is missing, out of range, or unknown; error.details lists each field.
401missing_authorization, invalid_tokenNo token, or the token is invalid, expired, or revoked. Refresh or re-link.
402subscription_requiredNo active Intoola Study subscription. error.upgrade_url points to the subscribe page.
403insufficient_scopeThe authorization does not include the required scope.
409 / 422request_in_progress, idempotency_key_reuseDuplicate request in flight, or an Idempotency-Key reused with different parameters.
413payload_too_largeThe request body exceeds 400 KB.
429rate_limited, daily_limit_reached, daily_usage_limit_reachedUsage limits; see Retry-After.
502 / 503 / 504generation_failed, service_unavailable, upstream_timeoutTemporary problem; retry later.

Limits

  • Per user: 6 requests per minute and 60 requests per day.
  • A daily AI-usage limit per user, shared with the Intoola website and Chrome extension (using Muse does not add extra allowance).
  • Up to 50,000 characters of study material per request.

Support and legal

Questions or issues: info@intoola.com. Privacy Policy · Terms of Service · About Intoola Study.