Snowflake Cortex
Authentication Type: API Key
Description: Use natural language to query your data with Snowflake Cortex. Automatically generates SQL queries from semantic models. API Key should be your Snowflake programmatic access token.
Authentication
To authenticate, you'll need a Snowflake programmatic access token. Learn how to create one in the Snowflake documentation.
Analyst
Query your data using natural language with Snowflake Cortex.
Ask Question (SQL Only)
Ask a natural language question about your data. Cortex will generate SQL queries using your semantic models but will NOT execute them. Returns only the generated SQL code. Use this when you want to review the SQL before running it.
Operation Type: Query (Read)
Parameters:
- accountUrl
string(required): Snowflake account URL (e.g., https://myorg-myaccount.snowflakecomputing.com) - warehouse
string(nullable): Snowflake warehouse to use for compute (optional, uses default if not specified) - database
string(nullable): Snowflake database context (optional, uses default if not specified) - schema
string(nullable): Snowflake schema context (optional, uses default if not specified) - role
string(nullable): Snowflake role to use (optional, uses default role from token if not specified) - question
string(required): The natural language question to ask about your data - semanticModel
string(nullable): YAML semantic model specification. Required if semanticModelFile and semanticView are not provided - semanticModelFile
string(nullable): Path to the semantic model YAML file on a Snowflake stage (e.g., @my_db.my_schema.my_stage/my_semantic_model.yaml) - semanticView
string(nullable): Fully qualified name of the semantic view (e.g., MY_DB.MY_SCHEMA.SEMANTIC_VIEW) - conversationHistory
array of objects(nullable): Previous conversation history for multi-turn conversations. Include previous messages to build upon previous queries- role
string: The role of the speaker (user or analyst) - content
array of objects: The content of the message- type
string: The content type (text, sql, or suggestions) - text
string(nullable): Text content (for type: text) - statement
string(nullable): SQL statement (for type: sql) - suggestions
array of strings(nullable): Suggested questions (for type: suggestions)
- type
- role
Returns:
- requestId
string: Unique request ID from Snowflake - message
object: The analyst response message- role
string: The role of the responder (analyst) - content
array of objects: Array of content blocks in the response- type
string: The content type (text, sql, or suggestions) - text
string(nullable): Explanatory text from the analyst - statement
string(nullable): Generated SQL statement - confidence
object(nullable): Confidence information for SQL responses- verifiedQueryUsed
object(nullable): Information about verified query used- name
string: Name of the verified query - question
string: Question answered by the verified query - sql
string: SQL statement of the verified query - verifiedAt
number: Timestamp when query was verified - verifiedBy
string: Person who verified the query
- name
- verifiedQueryUsed
- suggestions
array of strings(nullable): Suggested questions if SQL cannot be generated
- type
- role
- warnings
array of objects(nullable): List of warnings from the analyst- message
string: Detailed description of the warning
- message
- responseMetadata
object(nullable): Metadata about response generation- modelNames
array of strings(nullable): List of models used to generate response - cortexSearchRetrieval
array(nullable): Entities resolved with cortex search - questionCategory
string(nullable): How the question was categorized - semanticModelSelection
string(nullable): Which semantic model was chosen when multiple models were provided
- modelNames
Example Usage:
{
"accountUrl": "https://myorg-myaccount.snowflakecomputing.com",
"warehouse": "COMPUTE_WH",
"database": "SALES_DB",
"schema": "PUBLIC",
"role": "ANALYST_ROLE",
"question": "What were the top 5 products by revenue last quarter?",
"semanticModel": "name: sales_model\ntables:\n - name: sales\n base_table: sales_db.public.sales_fact\n dimensions:\n - name: product_name\n expr: product_name\n - name: sale_date\n expr: sale_date\n measures:\n - name: revenue\n expr: SUM(amount)\n aggregation: sum",
"semanticModelFile": null,
"semanticView": null,
"conversationHistory": null
}
Ask Question & Get Results
Ask a natural language question about your data. Cortex will generate SQL queries using your semantic models AND execute them automatically. Returns both the generated SQL and the actual query results. Provide your Snowflake account URL, connection context (warehouse, database, schema, role), and either a semantic model YAML, file reference, or semantic view name.
Operation Type: Query (Read)
Parameters:
- accountUrl
string(required): Snowflake account URL (e.g., https://myorg-myaccount.snowflakecomputing.com) - warehouse
string(nullable): Snowflake warehouse to use for compute (optional, uses default if not specified) - database
string(nullable): Snowflake database context (optional, uses default if not specified) - schema
string(nullable): Snowflake schema context (optional, uses default if not specified) - role
string(nullable): Snowflake role to use (optional, uses default role from token if not specified) - question
string(required): The natural language question to ask about your data - semanticModel
string(nullable): YAML semantic model specification. Required if semanticModelFile and semanticView are not provided - semanticModelFile
string(nullable): Path to the semantic model YAML file on a Snowflake stage (e.g., @my_db.my_schema.my_stage/my_semantic_model.yaml) - semanticView
string(nullable): Fully qualified name of the semantic view (e.g., MY_DB.MY_SCHEMA.SEMANTIC_VIEW) - conversationHistory
array of objects(nullable): Previous conversation history for multi-turn conversations. Include previous messages to build upon previous queries- role
string: The role of the speaker (user or analyst) - content
array of objects: The content of the message- type
string: The content type (text, sql, or suggestions) - text
string(nullable): Text content (for type: text) - statement
string(nullable): SQL statement (for type: sql) - suggestions
array of strings(nullable): Suggested questions (for type: suggestions)
- type
- role
Returns:
- requestId
string: Unique request ID from Snowflake - generatedSql
string(nullable): The SQL query generated by Cortex Analyst (null if no SQL was generated) - explanation
string(nullable): Explanation of the generated query - executionResults
object(nullable): Results from executing the generated SQL (null if no SQL was generated)- statementHandle
string: Snowflake statement execution handle - data
array of objects: Query results as array of records - rowCount
number: Number of rows returned - executionTime
number: Query execution time in milliseconds
- statementHandle
- suggestions
array of strings(nullable): Suggested questions if Cortex could not generate SQL - warnings
array of objects(nullable): List of warnings from Cortex Analyst- message
string: Detailed description of the warning
- message
- responseMetadata
object(nullable): Metadata about response generation- modelNames
array of strings(nullable): List of models used to generate response - cortexSearchRetrieval
array(nullable): Entities resolved with cortex search - questionCategory
string(nullable): How the question was categorized - semanticModelSelection
string(nullable): Which semantic model was chosen when multiple models were provided
- modelNames
Example Usage:
{
"accountUrl": "https://myorg-myaccount.snowflakecomputing.com",
"warehouse": "COMPUTE_WH",
"database": "SALES_DB",
"schema": "PUBLIC",
"role": "ANALYST_ROLE",
"question": "Show me monthly revenue trends for the last 6 months",
"semanticModel": null,
"semanticModelFile": "@sales_db.public.models_stage/sales_semantic_model.yaml",
"semanticView": null,
"conversationHistory": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What were total sales last year?",
"statement": null,
"suggestions": null
}
]
},
{
"role": "analyst",
"content": [
{
"type": "sql",
"text": null,
"statement": "SELECT SUM(revenue) FROM sales WHERE year = 2024",
"suggestions": null
}
]
}
]
}
Agent
Interact with Snowflake Cortex Agents to have intelligent conversations powered by your data and tools.
Chat
Chat with a Snowflake Cortex Agent. Agents can answer questions, execute tools, and maintain conversation context across multiple turns.
Operation Type: Mutation (Write)
Parameters:
- accountUrl
string(required): Snowflake account URL (e.g., https://myorg-myaccount.snowflakecomputing.com) - agentRef
object(required): Reference to the Cortex Agent to chat with- database
string: Database where the agent is located - schema
string: Schema where the agent is located - name
string: Name of the agent
- database
- message
string(required): The message to send to the agent - threadId
string(nullable): Thread ID for continuing a conversation. Pass the threadId from a previous response to maintain context. Leave null for a new conversation - parentMessageId
string(nullable): Message ID to continue from. Pass the messageId from a previous response for follow-up questions - toolChoice
object(nullable): Control how the agent uses tools- type
string: Tool selection mode - "auto" (agent decides), "required" (must use a tool), or "tool" (use specific tools) - name
array of strings(nullable): Tool names to allow or require (required when type is "tool")
- type
- warehouse
string(nullable): Snowflake warehouse to use for compute (optional, uses default if not specified) - role
string(nullable): Snowflake role to use (optional, uses default role from token if not specified) - originApplication
string(nullable): Application identifier for tracking purposes
Returns:
- text
string: The agent's response text - threadId
string: Thread ID to use for follow-up messages in the same conversation - messageId
string: Message ID to use as parentMessageId for the next message - continuationHint
string: Human-readable hint explaining how to continue the conversation
Example Usage (New Conversation):
{
"accountUrl": "https://myorg-myaccount.snowflakecomputing.com",
"agentRef": {
"database": "ANALYTICS_DB",
"schema": "AGENTS",
"name": "SALES_ASSISTANT"
},
"message": "What were our top performing products last quarter?",
"threadId": null,
"parentMessageId": null,
"toolChoice": null,
"warehouse": "COMPUTE_WH",
"role": "ANALYST_ROLE",
"originApplication": null
}
Example Usage (Follow-up Message):
{
"accountUrl": "https://myorg-myaccount.snowflakecomputing.com",
"agentRef": {
"database": "ANALYTICS_DB",
"schema": "AGENTS",
"name": "SALES_ASSISTANT"
},
"message": "Can you break that down by region?",
"threadId": "abc123-thread-id",
"parentMessageId": "1",
"toolChoice": null,
"warehouse": "COMPUTE_WH",
"role": "ANALYST_ROLE",
"originApplication": null
}
Important: For multi-turn conversations, you must pass the threadId and messageId from the previous response. The first call will return these values - use them in subsequent calls to maintain conversation context.
Common Use Cases
Self-Service Analytics:
- Enable business users to query data using natural language without SQL knowledge
- Generate verified SQL queries from semantic models for consistent analysis
- Review generated SQL before execution for transparency and learning
Interactive Data Exploration:
- Ask follow-up questions building on previous queries using conversation history
- Explore data patterns and trends through multi-turn conversations
- Get suggested questions when the analyst needs more context
Report Generation:
- Automatically execute queries and retrieve results for dashboards and reports
- Track query performance with execution time and statement handles
- Leverage semantic models to ensure consistent metrics across reports
Data Governance:
- Use verified queries to ensure approved SQL patterns are followed
- Track which semantic models and entities were used for each query
- Monitor warnings and metadata to understand query generation quality
Conversational AI Assistants:
- Build intelligent assistants that can answer questions using your Snowflake data
- Maintain conversation context across multiple turns for natural follow-up questions
- Leverage Cortex Agents with custom tools and data access for domain-specific expertise