Skip to main content
Supabase logo

Overview

Add Supabase to any ModuleX agent or workflow. Open-source Firebase alternative providing a Postgres database, authentication, instant APIs, and realtime subscriptions via the Supabase PostgREST API (https://<subdomain>.supabase.co/rest/v1/).
Categories: Databases · Database · Backend · Developer Tools & Infrastructure · Auth: Supabase Service Key · Actions: 8

Authentication

Supabase Service Key

Authenticate using your Supabase project subdomain and service role key
1

Step 1

Go to https://app.supabase.com and open your project
2

Step 2

Navigate to Project Settings > API
3

Step 3

Copy your Project URL subdomain (the part before .supabase.co)
4

Step 4

Copy the service_role key (NOT the anon key)
5

Step 5

Paste both values below

Required Credentials

FieldDescriptionRequiredFormat
Project SubdomainYour Supabase project subdomain (the part before .supabase.co in your project URL)Yesabcdefghijklmnopqrst
Service Role KeyYour Supabase service_role key from Project Settings > APIYeseyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Available Actions

Parameters

table
string
required
Name of the table to query
column
string
Column name to filter by (required if filter and value are provided)
filter
string
Filter operator: eq, neq, gt, gte, lt, lte, like, ilike
value
string
Value to filter the column by
order_by
string
required
Column name to order results by
sort_order
string
Sort direction: ascending or descending (Default: ascending)
max
integer
Maximum number of rows to return (Default: 20)

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "data": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Data",
      "type": "array"
    },
    "count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Count"
    },
    "status": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status"
    },
    "status_text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status Text"
    }
  },
  "required": [
    "success"
  ],
  "title": "SelectRowOutput",
  "type": "object"
}

Parameters

table
string
required
Name of the table to insert into
data
object
required
Column names and values as key/value pairs for the new row

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "data": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Data",
      "type": "array"
    },
    "status": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status"
    },
    "status_text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status Text"
    }
  },
  "required": [
    "success"
  ],
  "title": "InsertRowOutput",
  "type": "object"
}

Parameters

table
string
required
Name of the table to update
column
string
required
Column name to match rows for update
value
string
required
Value to match in the specified column
data
object
required
Column names and new values as key/value pairs

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "data": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Data",
      "type": "array"
    },
    "status": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status"
    },
    "status_text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status Text"
    }
  },
  "required": [
    "success"
  ],
  "title": "UpdateRowOutput",
  "type": "object"
}

Parameters

table
string
required
Name of the table to upsert into
data
object
required
Column names and values as key/value pairs

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "data": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Data",
      "type": "array"
    },
    "status": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status"
    },
    "status_text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status Text"
    }
  },
  "required": [
    "success"
  ],
  "title": "UpsertRowOutput",
  "type": "object"
}

Parameters

table
string
required
Name of the table to delete from
column
string
required
Column name to match rows for deletion
value
string
required
Value to match in the specified column

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "data": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Data",
      "type": "array"
    },
    "status": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status"
    },
    "status_text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status Text"
    }
  },
  "required": [
    "success"
  ],
  "title": "DeleteRowOutput",
  "type": "object"
}

Parameters

table
string
required
Name of the table to insert rows into
data
array
required
Array of objects, each representing a row with column names and values as key/value pairs

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "data": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Data",
      "type": "array"
    },
    "status": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status"
    },
    "status_text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status Text"
    }
  },
  "required": [
    "success"
  ],
  "title": "BatchInsertRowsOutput",
  "type": "object"
}

Parameters

function_name
string
required
Name of the Postgres function to call
args
object
Arguments to pass to the function as key/value pairs

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "data": {
      "default": null,
      "title": "Data"
    },
    "status": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status"
    },
    "status_text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status Text"
    }
  },
  "required": [
    "success"
  ],
  "title": "RemoteProcedureCallOutput",
  "type": "object"
}

Parameters

table
string
required
Name of the table to count rows from
column
string
Column name to filter by (optional)
filter
string
Filter operator: eq, neq, gt, gte, lt, lte, like, ilike
value
string
Value to filter the column by

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Count"
    }
  },
  "required": [
    "success"
  ],
  "title": "CountRowsOutput",
  "type": "object"
}

Limits & Quotas

  • Free tier: 500 MB database, 2 GB bandwidth, 50 MB file storage.
  • Pro tier: 8 GB database, 250 GB bandwidth, 100 GB file storage.
  • Rate limits: Supabase does not publish hard API rate limits; PostgREST is limited by connection pool size (default: 60 connections on free tier, higher on paid plans).
  • Error model: non-2xx responses and timeouts are caught and returned as success=False + error rather than raising.

MySQL

PostgreSQL

Snowflake