Snowflake Spark Connect API

The Snowflake Spark Connect API is a REST API that enables execution of Spark workloads on Snowflake infrastructure through REST endpoints.

Operations 10

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /api/v2/spark-connect/execute-plan Execute a Spark Connect query plan · It is guaranteed that there is at least one ARROW batch returned even if the… #
Ask an LLM
“How do I run a Spark DataFrame plan against Snowflake through Spark Connect?”
“Does executing a Spark Connect plan always stream back at least one Arrow batch?”
Tell an agent
Execute this Spark Connect plan and stream the Arrow results back.
Run my Spark query plan on Snowflake as a reattachable execution.
POST /api/v2/spark-connect/analyze-plan Analyze a Spark query plan for metadata · Analyzes a query and return a [[AnalyzeResponse]] containing metadata about the… #
Ask an LLM
“Can I get the schema of a Spark query without running it?”
“What metadata does Spark Connect return when analyzing a plan?”
Tell an agent
Analyze this Spark plan and return its output schema.
Explain the Spark query plan without executing it.
POST /api/v2/spark-connect/config Get or update Spark session configuration · Update or fetch the configurations and returns a [[ConfigResponse]] containing… #
Ask an LLM
“How do I read or change Spark configuration values for my Spark Connect session?”
“Can I set a Spark conf key on a session running against Snowflake?”
Tell an agent
Set the Spark session configuration value I specify.
Fetch the current Spark Connect session configuration.
POST /api/v2/spark-connect/add-artifacts Upload artifacts to a Spark session · Add artifacts to the session and returns a [[AddArtifactsResponse]] containing… #
Ask an LLM
“How do I add JARs or Python files to a Spark Connect session?”
“Can I upload my UDF dependencies to the Spark session?”
Tell an agent
Add these artifacts to my Spark Connect session.
Upload my Python dependency files into the Spark session.
POST /api/v2/spark-connect/artifact-status Check status of session artifacts · Check statuses of artifacts in the session and returns them in a… #
Ask an LLM
“Have the artifacts I uploaded to the Spark session already landed?”
“Can I check whether a named artifact exists in my Spark Connect session?”
Tell an agent
Check the status of the artifacts in my Spark session.
Tell me which of these artifact names already exist in the session.
POST /api/v2/spark-connect/interrupt Interrupt running Spark executions · Interrupts running executions #
Ask an LLM
“How do I stop a Spark Connect job that is still running?”
“Can I interrupt every execution in my Spark session at once?”
Tell an agent destructive · confirm first
Interrupt all running executions in my Spark session.
Cancel the Spark operation that is currently executing.
POST /api/v2/spark-connect/reattach-execute Reattach to a Spark execution · The ExecutePlan must have been started with ReattachOptions.reattachable=true. #
Ask an LLM
“My Spark result stream dropped before ResultComplete; how do I resume it?”
“Can I reattach to an execution that was started as reattachable?”
Tell an agent
Reattach to my reattachable Spark execution and continue streaming results.
Resume the interrupted result stream of the Spark plan I started earlier.
POST /api/v2/spark-connect/release-execute Release a reattachable Spark execution · The ExecutePlan must have been started with ReattachOptions.reattachable=true. #
Ask an LLM
“How do I free server resources held by a reattachable Spark execution?”
“Can I release only the already-consumed part of a reattachable execution's results?”
Tell an agent
Release the reattachable Spark execution I finished reading.
Release the consumed responses of my reattachable execution.
POST /api/v2/spark-connect/pull-request Pull the next Spark request for a sproc processor · It is used for sproc dataframe processor to pull Spark request from GS #
Ask an LLM
“How does the stored procedure DataFrame processor fetch its next Spark request?”
“What endpoint does a sproc use to pull pending Spark work?”
Tell an agent
Pull the next Spark request for the stored procedure processor.
Get the next pending Spark request for my sproc DataFrame processor.
POST /api/v2/spark-connect/push-response Push a Spark response from a sproc processor · It is used for sproc dataframe processor to push Spark response to GS #
Ask an LLM
“How does a stored procedure send its Spark response back?”
“Where does the sproc DataFrame processor push completed Spark results?”
Tell an agent
Push this Spark response from the stored procedure processor.
Send the sproc's completed Spark result back to Snowflake.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/snowflake:snowflake-spark-connect-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

snowflake-spark-connect-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 0.0.1
  title: Snowflake Spark Connect API
  description: The Snowflake Spark Connect API is a REST API that you can use to access, update, and perform certain actions on Spark Connect resource in a Snowflake database.
  contact:
    name: Snowflake, Inc.
    url: https://snowflake.com
    email: support@snowflake.com
servers:
- description: Snowflake REST Server
  url: https://org-account.snowflakecomputing.com
security:
- KeyPair: []
- ExternalOAuth: []
- SnowflakeOAuth: []
- ProgrammaticAccessToken: []
tags:
- name: spark-connect
paths:
  /api/v2/spark-connect/execute-plan:
    post:
      summary: It is guaranteed that there is at least one ARROW batch returned even if the…
      tags:
      - spark-connect
      description: Executes a request that contains the query and returns a stream of [[ExecutePlanResponse]].
      operationId: executePlan
      parameters: []
      responses:
        '200':
          description: successful
          headers:
            X-Snowflake-Request-ID:
              $ref: common.yaml#/components/headers/X-Snowflake-Request-ID
            Link:
              $ref: common.yaml#/components/headers/Link
          content:
            application/octet-stream:
              schema:
                type: string
                format: byte
        '202':
          $ref: common.yaml#/components/responses/202SuccessAcceptedResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '408':
          $ref: common.yaml#/components/responses/408RequestTimeout
        '409':
          $ref: common.yaml#/components/responses/409Conflict
        '410':
          $ref: common.yaml#/components/responses/410Gone
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: byte
  /api/v2/spark-connect/analyze-plan:
    post:
      summary: Analyzes a query and return a [[AnalyzeResponse]] containing metadata about the…
      tags:
      - spark-connect
      description: Analyzes a query and return a [[AnalyzeResponse]] containing metadata about the query.
      operationId: analyzePlan
      parameters: []
      responses:
        '200':
          description: successful
          headers:
            X-Snowflake-Request-ID:
              $ref: common.yaml#/components/headers/X-Snowflake-Request-ID
            Link:
              $ref: common.yaml#/components/headers/Link
          content:
            application/octet-stream:
              schema:
                type: string
                format: byte
        '202':
          $ref: common.yaml#/components/responses/202SuccessAcceptedResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '408':
          $ref: common.yaml#/components/responses/408RequestTimeout
        '409':
          $ref: common.yaml#/components/responses/409Conflict
        '410':
          $ref: common.yaml#/components/responses/410Gone
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: byte
  /api/v2/spark-connect/config:
    post:
      summary: Update or fetch the configurations and returns a [[ConfigResponse]] containing…
      tags:
      - spark-connect
      description: Update or fetch the configurations and returns a [[ConfigResponse]] containing the result.
      operationId: config
      parameters: []
      responses:
        '200':
          description: successful
          headers:
            X-Snowflake-Request-ID:
              $ref: common.yaml#/components/headers/X-Snowflake-Request-ID
            Link:
              $ref: common.yaml#/components/headers/Link
          content:
            application/octet-stream:
              schema:
                type: string
                format: byte
        '202':
          $ref: common.yaml#/components/responses/202SuccessAcceptedResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '408':
          $ref: common.yaml#/components/responses/408RequestTimeout
        '409':
          $ref: common.yaml#/components/responses/409Conflict
        '410':
          $ref: common.yaml#/components/responses/410Gone
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: byte
  /api/v2/spark-connect/add-artifacts:
    post:
      summary: Add artifacts to the session and returns a [[AddArtifactsResponse]] containing…
      tags:
      - spark-connect
      description: Add artifacts to the session and returns a [[AddArtifactsResponse]] containing metadata about the added artifacts.
      operationId: addArtifacts
      parameters: []
      responses:
        '200':
          description: successful
          headers:
            X-Snowflake-Request-ID:
              $ref: common.yaml#/components/headers/X-Snowflake-Request-ID
            Link:
              $ref: common.yaml#/components/headers/Link
          content:
            application/octet-stream:
              schema:
                type: string
                format: byte
        '202':
          $ref: common.yaml#/components/responses/202SuccessAcceptedResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '408':
          $ref: common.yaml#/components/responses/408RequestTimeout
        '409':
          $ref: common.yaml#/components/responses/409Conflict
        '410':
          $ref: common.yaml#/components/responses/410Gone
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: byte
  /api/v2/spark-connect/artifact-status:
    post:
      summary: Check statuses of artifacts in the session and returns them in a…
      tags:
      - spark-connect
      description: Check statuses of artifacts in the session and returns them in a [[ArtifactStatusesResponse]]
      operationId: artifactStatus
      parameters: []
      responses:
        '200':
          description: successful
          headers:
            X-Snowflake-Request-ID:
              $ref: common.yaml#/components/headers/X-Snowflake-Request-ID
            Link:
              $ref: common.yaml#/components/headers/Link
          content:
            application/octet-stream:
              schema:
                type: string
                format: byte
        '202':
          $ref: common.yaml#/components/responses/202SuccessAcceptedResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '408':
          $ref: common.yaml#/components/responses/408RequestTimeout
        '409':
          $ref: common.yaml#/components/responses/409Conflict
        '410':
          $ref: common.yaml#/components/responses/410Gone
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: byte
  /api/v2/spark-connect/interrupt:
    post:
      summary: Interrupts running executions
      tags:
      - spark-connect
      operationId: interrupt
      parameters: []
      responses:
        '200':
          description: successful
          headers:
            X-Snowflake-Request-ID:
              $ref: common.yaml#/components/headers/X-Snowflake-Request-ID
            Link:
              $ref: common.yaml#/components/headers/Link
          content:
            application/octet-stream:
              schema:
                type: string
                format: byte
        '202':
          $ref: common.yaml#/components/responses/202SuccessAcceptedResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '408':
          $ref: common.yaml#/components/responses/408RequestTimeout
        '409':
          $ref: common.yaml#/components/responses/409Conflict
        '410':
          $ref: common.yaml#/components/responses/410Gone
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: byte
  /api/v2/spark-connect/reattach-execute:
    post:
      summary: The ExecutePlan must have been started with ReattachOptions.reattachable=true.
      tags:
      - spark-connect
      description: Reattach to an existing re-attachable execution.
      operationId: reattachExecute
      parameters: []
      responses:
        '200':
          description: successful
          headers:
            X-Snowflake-Request-ID:
              $ref: common.yaml#/components/headers/X-Snowflake-Request-ID
            Link:
              $ref: common.yaml#/components/headers/Link
          content:
            application/octet-stream:
              schema:
                type: string
                format: byte
        '202':
          $ref: common.yaml#/components/responses/202SuccessAcceptedResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '408':
          $ref: common.yaml#/components/responses/408RequestTimeout
        '409':
          $ref: common.yaml#/components/responses/409Conflict
        '410':
          $ref: common.yaml#/components/responses/410Gone
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: byte
  /api/v2/spark-connect/release-execute:
    post:
      summary: The ExecutePlan must have been started with ReattachOptions.reattachable=true.
      tags:
      - spark-connect
      description: Release an re-attachable execution, or parts thereof.
      operationId: releaseExecute
      parameters: []
      responses:
        '200':
          description: successful
          headers:
            X-Snowflake-Request-ID:
              $ref: common.yaml#/components/headers/X-Snowflake-Request-ID
            Link:
              $ref: common.yaml#/components/headers/Link
          content:
            application/octet-stream:
              schema:
                type: string
                format: byte
        '202':
          $ref: common.yaml#/components/responses/202SuccessAcceptedResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '408':
          $ref: common.yaml#/components/responses/408RequestTimeout
        '409':
          $ref: common.yaml#/components/responses/409Conflict
        '410':
          $ref: common.yaml#/components/responses/410Gone
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: byte
  /api/v2/spark-connect/pull-request:
    post:
      summary: It is used for sproc dataframe processor to pull Spark request from GS
      tags:
      - spark-connect
      description: Get the next Spark request.
      operationId: pullRequest
      parameters: []
      responses:
        '200':
          description: successful
          headers:
            X-Snowflake-Request-ID:
              $ref: common.yaml#/components/headers/X-Snowflake-Request-ID
            Link:
              $ref: common.yaml#/components/headers/Link
          content:
            application/json:
              schema:
                type: string
        '202':
          $ref: common.yaml#/components/responses/202SuccessAcceptedResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '408':
          $ref: common.yaml#/components/responses/408RequestTimeout
        '409':
          $ref: common.yaml#/components/responses/409Conflict
        '410':
          $ref: common.yaml#/components/responses/410Gone
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
  /api/v2/spark-connect/push-response:
    post:
      summary: It is used for sproc dataframe processor to push Spark response to GS
      tags:
      - spark-connect
      description: Executes a request from sproc that contains the Spark response.
      operationId: pushResponse
      parameters: []
      responses:
        '200':
          description: successful
          headers:
            X-Snowflake-Request-ID:
              $ref: common.yaml#/components/headers/X-Snowflake-Request-ID
            Link:
              $ref: common.yaml#/components/headers/Link
          content:
            application/json:
              schema:
                type: string
        '202':
          $ref: common.yaml#/components/responses/202SuccessAcceptedResponse
        '400':
          $ref: common.yaml#/components/responses/400BadRequest
        '401':
          $ref: common.yaml#/components/responses/401Unauthorized
        '403':
          $ref: common.yaml#/components/responses/403Forbidden
        '404':
          $ref: common.yaml#/components/responses/404NotFound
        '405':
          $ref: common.yaml#/components/responses/405MethodNotAllowed
        '408':
          $ref: common.yaml#/components/responses/408RequestTimeout
        '409':
          $ref: common.yaml#/components/responses/409Conflict
        '410':
          $ref: common.yaml#/components/responses/410Gone
        '429':
          $ref: common.yaml#/components/responses/429LimitExceeded
        '500':
          $ref: common.yaml#/components/responses/500InternalServerError
        '503':
          $ref: common.yaml#/components/responses/503ServiceUnavailable
        '504':
          $ref: common.yaml#/components/responses/504GatewayTimeout
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
components:
  securitySchemes:
    KeyPair:
      $ref: common.yaml#/components/securitySchemes/KeyPair
    ExternalOAuth:
      $ref: common.yaml#/components/securitySchemes/ExternalOAuth
    SnowflakeOAuth:
      $ref: common.yaml#/components/securitySchemes/SnowflakeOAuth
    ProgrammaticAccessToken:
      $ref: common.yaml#/components/securitySchemes/ProgrammaticAccessToken