Skip to content
StudyFetch API

Materials

Generate and process material from a topic

Uses AI to generate study materials like outlines, notes, summaries, etc. from a given topic and waits for processing to complete

OpenAPI specification
POST/api/v1/materials/generate-and-process

Authentication

x-api-key

Request

curl --globoff --request POST \
  --url 'https://api.example.com/api/v1/materials/generate-and-process' \
  --header 'x-api-key: <API_KEY>' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "topic": "Photosynthesis in plants",
  "type": "notes",
  "name": "Photosynthesis Study Plan"
}'

Replace credential and <field> placeholders with your own values. URL placeholders appear as %3Cfield%3E. Review the example values before sending your request.

Replace https://api.example.com with the API server URL.

Use the sample JSON body as your starting point, and enter values that match the endpoint's schema.

Request body schema or example

{
  "type": "object",
  "properties": {
    "topic": {
      "type": "string",
      "description": "Topic or context to generate material from",
      "example": "Photosynthesis in plants"
    },
    "context": {
      "type": "string",
      "description": "Additional context or details about the topic",
      "example": "Focus on light-dependent and light-independent reactions"
    },
    "type": {
      "type": "string",
      "description": "Type of material to generate",
      "enum": [
        "outline",
        "overview",
        "notes",
        "summary"
      ],
      "example": "notes"
    },
    "name": {
      "type": "string",
      "description": "Name for the generated material",
      "example": "Photosynthesis Study Plan"
    },
    "folderId": {
      "type": "string",
      "description": "Target folder ID"
    },
    "length": {
      "type": "string",
      "description": "Length of the generated content",
      "enum": [
        "short",
        "medium",
        "long"
      ],
      "default": "medium"
    },
    "level": {
      "type": "string",
      "description": "Target education level",
      "enum": [
        "high_school",
        "college",
        "professional"
      ],
      "example": "college"
    },
    "references": {
      "description": "References that this material cites",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "example": "Understanding Photosynthesis",
            "description": "Reference title"
          },
          "url": {
            "type": "string",
            "example": "https://example.com/article",
            "description": "Reference URL"
          }
        },
        "required": [
          "title"
        ]
      }
    },
    "timeoutMs": {
      "type": "number",
      "default": 300000,
      "description": "Maximum time to wait for processing in milliseconds (default: 5 minutes)"
    },
    "pollIntervalMs": {
      "type": "number",
      "default": 2000,
      "description": "Polling interval in milliseconds (default: 2 seconds)"
    }
  },
  "required": [
    "topic",
    "type",
    "name"
  ]
}

Responses

201Material generated and processed successfully
{
  "type": "object",
  "properties": {
    "_id": {
      "type": "string",
      "description": "Material ID"
    },
    "name": {
      "type": "string",
      "description": "Material name"
    },
    "organizationId": {
      "type": "string",
      "description": "Organization ID"
    },
    "folderId": {
      "type": "string",
      "description": "Folder ID",
      "nullable": true
    },
    "contentType": {
      "type": "string",
      "description": "Content type",
      "enum": [
        "text",
        "pdf",
        "video",
        "audio",
        "image",
        "epub"
      ]
    },
    "content": {
      "type": "object",
      "description": "Material content",
      "properties": {
        "text": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "s3Key": {
          "type": "string"
        },
        "s3Url": {
          "type": "string"
        },
        "filename": {
          "type": "string"
        },
        "fileSize": {
          "type": "number"
        },
        "mimeType": {
          "type": "string"
        }
      }
    },
    "metadata": {
      "type": "object",
      "description": "Material metadata"
    },
    "status": {
      "type": "string",
      "description": "Material status",
      "enum": [
        "active",
        "processing",
        "pending_upload",
        "error",
        "deleted"
      ]
    },
    "usage": {
      "type": "object",
      "description": "Usage information"
    },
    "references": {
      "description": "References that this material cites",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "example": "Understanding Photosynthesis",
            "description": "Reference title"
          },
          "url": {
            "type": "string",
            "example": "https://example.com/article",
            "description": "Reference URL"
          }
        },
        "required": [
          "title"
        ]
      }
    },
    "createdAt": {
      "format": "date-time",
      "type": "string",
      "description": "Creation timestamp"
    },
    "updatedAt": {
      "format": "date-time",
      "type": "string",
      "description": "Last update timestamp"
    },
    "generationMetadata": {
      "type": "object",
      "description": "Generation metadata"
    }
  },
  "required": [
    "_id",
    "name",
    "organizationId",
    "folderId",
    "contentType",
    "content",
    "status",
    "createdAt",
    "updatedAt"
  ]
}
400Invalid parameters, generation failed, or processing timed out
403Insufficient permissions