Python API Reference | Supabase Docs
1
import os
2
from supabase import create_client, Client
3
4
url: str = os.environ.get("SUPABASE_URL")
5
key: str = os.environ.get("SUPABASE_KEY")
6
supabase: Client = create_client(url, key)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.execute()
5
)
1
response = (
2
supabase.table("planets")
3
.insert({"id": 1, "name": "Pluto"})
4
.execute()
5
)
1
response = (
2
supabase.table("instruments")
3
.update({"name": "piano"})
4
.eq("id", 1)
5
.execute()
6
)
1
response = (
2
supabase.table("instruments")
3
.upsert({"id": 1, "name": "piano"})
4
.execute()
5
)
1
response = (
2
supabase.table("countries")
3
.delete()
4
.eq("id", 1)
5
.execute()
6
)
1
response = (
2
supabase.rpc("hello_world")
3
.execute()
4
)
1
# Correct
2
response = (
3
supabase.table("instruments")
4
.select("name, section_id")
5
.eq("name", "flute")
6
.execute()
7
)
8
9
# Incorrect
10
response = (
11
supabase.table("instruments")
12
.eq("name", "flute")
13
.select("name, section_id")
14
.execute()
15
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.eq("name", "Earth")
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.neq("name", "Earth")
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.gt("id", 2)
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.gte("id", 2)
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.lt("id", 2)
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.lte("id", 2)
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.like("name", "%Ea%")
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.ilike("name", "%ea%")
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.is_("name", "null")
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.in_("name", ["Earth", "Mars"])
5
.execute()
6
)
1
response = (
2
supabase.table("issues")
3
.select("*")
4
.contains("tags", ["is:open", "priority:low"])
5
.execute()
6
)
1
response = (
2
supabase.table("classes")
3
.select("name")
4
.contained_by("days", ["monday", "tuesday", "wednesday", "friday"])
5
.execute()
6
)
1
response = (
2
supabase.table("reservations")
3
.select("*")
4
.range_gt("during", ["2000-01-02 08:00", "2000-01-02 09:00"])
5
.execute()
6
)
1
response = (
2
supabase.table("reservations")
3
.select("*")
4
.range_gte("during", ["2000-01-02 08:30", "2000-01-02 09:30"])
5
.execute()
6
)
1
response = (
2
supabase.table("reservations")
3
.select("*")
4
.range_lt("during", ["2000-01-01 15:00", "2000-01-01 16:00"])
5
.execute()
6
)
1
response = (
2
supabase.table("reservations")
3
.select("*")
4
.range_lte("during", ["2000-01-01 14:00", "2000-01-01 16:00"])
5
.execute()
6
)
1
response = (
2
supabase.table("reservations")
3
.select("*")
4
.range_adjacent("during", ["2000-01-01 12:00", "2000-01-01 13:00"])
5
.execute()
6
)
1
response = (
2
supabase.table("issues")
3
.select("title")
4
.overlaps("tags", ["is:closed", "severity:high"])
5
.execute()
6
)
1
response = (
2
supabase.table("texts")
3
.select("content")
4
.text_search(
5
"content",
6
"'eggs' & 'ham'",
7
options={"config": "english"},
8
)
9
.execute()
10
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.match({"id": 2, "name": "Earth"})
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.not_.is_("name", "null")
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("name")
4
.or_("id.eq.2,name.eq.Mars")
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.filter("name", "in", '("Mars","Tatooine")')
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.order("name", desc=True)
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("name")
4
.limit(1)
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("name")
4
.range(0, 1)
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("name")
4
.limit(1)
5
.single()
6
.execute()
7
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.eq("name", "Earth")
5
.maybe_single()
6
.execute()
7
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.csv()
5
.execute()
6
)
1
response = (
2
supabase.table("planets")
3
.select("*")
4
.explain()
5
.execute()
6
)
1
response = supabase.auth.sign_up(
2
{
3
"email": "email@example.com",
4
"password": "password",
5
}
6
)
1
response = supabase.auth.sign_in_anonymously(
2
{"options": {"captcha_token": ""}}
3
)
1
response = supabase.auth.sign_in_with_password(
2
{
3
"email": "email@example.com",
4
"password": "example-password",
5
}
6
)
1
response = supabase.auth.sign_in_with_id_token(
2
{
3
"provider": "google",
4
"token": "your-id-token",
5
}
6
)
1
response = supabase.auth.sign_in_with_otp(
2
{
3
"email": "email@example.com",
4
"options": {
5
"email_redirect_to": "https://example.com/welcome",
6
},
7
}
8
)
1
response = supabase.auth.sign_in_with_oauth(
2
{"provider": "github"}
3
)
1
response = supabase.auth.sign_in_with_sso(
2
{"domain": "company.com"}
3
)
1
response = supabase.auth.get_claims()
1
response = supabase.auth.sign_out()
1
supabase.auth.reset_password_for_email(
2
email,
3
{
4
"redirect_to": "https://example.com/update-password",
5
}
6
)
1
response = supabase.auth.verify_otp(
2
{
3
"email": "email@example.com",
4
"token": "123456",
5
"type": "email",
6
}
7
)
1
response = supabase.auth.get_session()
1
response = supabase.auth.refresh_session()
1
response = supabase.auth.get_user()
1
response = supabase.auth.update_user(
2
{"email": "new@email.com"}
3
)
1
response = supabase.auth.get_user_identities()
1
response = supabase.auth.link_identity(
2
{"provider": "github"}
3
)
1
# retrieve all identities linked to a user
2
response = supabase.auth.get_user_identities()
3
4
# find the google identity
5
google_identity = list(
6
filter(lambda identity: identity.provider == "google", response.identities)
7
).pop()
8
9
# unlink the google identity
10
response = supabase.auth.unlink_identity(google_identity)
1
response = supabase.auth.reauthenticate()
1
response = supabase.auth.resend(
2
{
3
"type": "signup",
4
"email": "email@example.com",
5
"options": {
6
"email_redirect_to": "https://example.com/welcome",
7
},
8
}
9
)
1
response = supabase.auth.set_session(access_token, refresh_token)
1
response = supabase.auth.exchange_code_for_session(
2
{"auth_code": "34e770dd-9ff9-416c-87fa-43b31d7ef225"}
3
)
1
response = supabase.auth.mfa.enroll(
2
{
3
"factor_type": "totp",
4
"friendly_name": "your_friendly_name",
5
}
6
)
1
response = supabase.auth.mfa.challenge(
2
{"factor_id": "34e770dd-9ff9-416c-87fa-43b31d7ef225"}
3
)
1
response = supabase.auth.mfa.verify(
2
{
3
"factor_id": "34e770dd-9ff9-416c-87fa-43b31d7ef225",
4
"challenge_id": "4034ae6f-a8ce-4fb5-8ee5-69a5863a7c15",
5
"code": "123456",
6
}
7
)
1
response = supabase.auth.mfa.challenge_and_verify(
2
{
3
"factor_id": "34e770dd-9ff9-416c-87fa-43b31d7ef225",
4
"code": "123456",
5
}
6
)
1
response = supabase.auth.mfa.unenroll(
2
{"factor_id": "34e770dd-9ff9-416c-87fa-43b31d7ef225"}
3
)
1
response = supabase.auth.mfa.get_authenticator_assurance_level()
1
from supabase import create_client
2
from supabase.lib.client_options import ClientOptions
3
4
supabase = create_client(
5
supabase_url,
6
service_role_key,
7
options=ClientOptions(
8
auto_refresh_token=False,
9
persist_session=False,
10
)
11
)
12
13
# Access auth admin api
14
admin_auth_client = supabase.auth.admin
1
response = supabase.auth.admin.get_user_by_id(1)
1
response = supabase.auth.admin.list_users()
1
response = supabase.auth.admin.create_user(
2
{
3
"email": "user@email.com",
4
"password": "password",
5
"user_metadata": {"name": "Yoda"},
6
}
7
)
1
supabase.auth.admin.delete_user(
2
"715ed5db-f090-4b8c-a067-640ecee36aa0"
3
)
1
response = supabase.auth.admin.invite_user_by_email("email@example.com")
1
response = supabase.auth.admin.generate_link(
2
{
3
"type": "signup",
4
"email": "email@example.com",
5
"password": "secret",
6
}
7
)
1
response = supabase.auth.admin.update_user_by_id(
2
"11111111-1111-1111-1111-111111111111",
3
{
4
"email": "new@email.com",
5
}
6
)
1
response = supabase.auth.admin.mfa.delete_factor(
2
{
3
"id": "34e770dd-9ff9-416c-87fa-43b31d7ef225",
4
"user_id": "a89baba7-b1b7-440f-b4bb-91026967f66b"
5
}
6
)
1
response = supabase.auth.admin.oauth.list_clients()
1
response = supabase.auth.admin.oauth.get_client("client-id")
1
response = supabase.auth.admin.oauth.create_client(
2
{
3
"name": "My OAuth Client",
4
"redirect_uris": ["https://example.com/callback"]
5
}
6
)
1
response = supabase.auth.admin.oauth.update_client(
2
"client-id",
3
{
4
"name": "Updated OAuth Client",
5
"redirect_uris": ["https://example.com/callback", "https://example.com/callback2"]
6
}
7
)
1
supabase.auth.admin.oauth.delete_client("client-id")
1
response = supabase.auth.admin.oauth.regenerate_client_secret("client-id")
1
response = supabase.functions.invoke(
2
"hello-world",
3
invoke_options={
4
"body": {"name": "Functions"},
5
},
6
)
1
import os
2
import asyncio
3
from supabase import acreate_client, AsyncClient
4
5
url: str = os.environ.get("SUPABASE_URL")
6
key: str = os.environ.get("SUPABASE_KEY")
7
8
async def create_supabase():
9
supabase: AsyncClient = await acreate_client(url, key)
10
return supabase
1
channel = supabase.channel("room1")
2
3
def on_subscribe(status, err):
4
if status == RealtimeSubscribeStates.SUBSCRIBED:
5
asyncio.create_task(channel.send_broadcast(
6
"cursor-pos",
7
{"x": random.random(), "y": random.random()}
8
))
9
10
def handle_broadcast(payload):
11
print("Cursor position received!", payload)
12
13
await channel.on_broadcast(event="cursor-pos", callback=handle_broadcast).subscribe(on_subscribe)
1
await supabase.remove_channel(myChannel)
1
await supabase.remove_all_channels()
1
channels = supabase.get_channels()
1
channel = supabase.channel("room1")
2
3
def on_subscribe(status, err):
4
if status == RealtimeSubscribeStates.SUBSCRIBED:
5
asyncio.create_task(channel.send_broadcast('cursor-pos', {"x": random.random(), "y": random.random()}))
6
7
await channel.subscribe(on_subscribe)
1
response = supabase.storage.list_buckets()
1
response = supabase.storage.get_bucket("avatars")
1
response = (
2
supabase.storage
3
.create_bucket(
4
"avatars",
5
options={
6
"public": False,
7
"allowed_mime_types": ["image/png"],
8
"file_size_limit": 1024,
9
}
10
)
11
)
1
response = supabase.storage.empty_bucket("avatars")
1
response = (
2
supabase.storage
3
.update_bucket(
4
"avatars",
5
options={
6
"public": False,
7
"allowed_mime_types": ["image/png"],
8
"file_size_limit": 1024,
9
}
10
)
11
)
1
response = supabase.storage.delete_bucket("avatars")
1
with open("./public/avatar1.png", "rb") as f:
2
response = (
3
supabase.storage
4
.from_("avatars")
5
.upload(
6
file=f,
7
path="public/avatar1.png",
8
file_options={"cache-control": "3600", "upsert": "false"}
9
)
10
)
1
with open("./public/avatar1.png", "rb") as f:
2
response = (
3
supabase.storage
4
.from_("avatars")
5
.update(
6
file=f,
7
path="public/avatar1.png",
8
file_options={"cache-control": "3600", "upsert": "true"}
9
)
10
)
1
response = (
2
supabase.storage
3
.from_("avatars")
4
.move(
5
"public/avatar1.png",
6
"private/avatar2.png"
7
)
8
)
1
response = (
2
supabase.storage
3
.from_("avatars")
4
.copy(
5
"public/avatar1.png",
6
"private/avatar2.png"
7
)
8
)
1
response = (
2
supabase.storage
3
.from_("avatars")
4
.create_signed_url(
5
"folder/avatar1.png",
6
60
7
)
8
)
1
response = (
2
supabase.storage
3
.from_("avatars")
4
.create_signed_urls(
5
["folder/avatar1.png", "folder/avatar2.png"],
6
60
7
)
8
)
1
response = (
2
supabase.storage
3
.from_("avatars")
4
.create_signed_upload_url("folder/avatar1.png")
5
)
1
with open("./public/avatar1.png", "rb") as f:
2
response = (
3
supabase.storage
4
.from_("avatars")
5
.upload_to_signed_url(
6
path="folder/cat.jpg",
7
token="token-from-create_signed_upload_url",
8
file=f,
9
)
10
)
1
response = (
2
supabase.storage
3
.from_("avatars")
4
.get_public_url("folder/avatar1.jpg")
5
)
1
with open("./myfolder/avatar1.png", "wb+") as f:
2
response = (
3
supabase.storage
4
.from_("avatars")
5
.download("folder/avatar1.png")
6
)
7
f.write(response)
1
response = (
2
supabase.storage
3
.from_("avatars")
4
.remove(["folder/avatar1.png"])
5
)
1
response = (
2
supabase.storage
3
.from_("avatars")
4
.list(
5
"folder",
6
{
7
"limit": 100,
8
"offset": 0,
9
"sortBy": {"column": "name", "order": "desc"},
10
}
11
)
12
)
1
response = supabase.storage.analytics().create("analytics-bucket")
1
response = supabase.storage.analytics().list()
1
response = supabase.storage.analytics().delete("analytics-bucket")
1
supabase.storage.vectors().create_bucket("vectors-bucket")
1
supabase.storage.vectors().delete_bucket("vectors-bucket")
1
response = supabase.storage.vectors().get_bucket("vectors-bucket")
1
response = supabase.storage.vectors().list_buckets()
1
supabase.storage.vectors().from_("vectors-bucket").create_index(
2
index_name="my-index",
3
dimension=128,
4
distance_metric="cosine",
5
data_type="float32"
6
)
1
supabase.storage.vectors().from_("vectors-bucket").delete_index("my-index")
1
response = supabase.storage.vectors().from_("vectors-bucket").get_index("my-index")
1
response = supabase.storage.vectors().from_("vectors-bucket").list_indexes()
1
supabase.storage.vectors().from_("vectors-bucket").index("my-index").delete(["vector-1", "vector-2"])
1
response = supabase.storage.vectors().from_("vectors-bucket").index("my-index").get("vector-1")
1
response = supabase.storage.vectors().from_("vectors-bucket").index("my-index").list()
1
supabase.storage.vectors().from_("vectors-bucket").index("my-index").put([
2
{
3
"key": "vector-1",
4
"data": {"float32": [0.1, 0.2, 0.3]},
5
"metadata": {"category": "example"}
6
}
7
])
1
response = supabase.storage.vectors().from_("vectors-bucket").index("my-index").query(
2
query_vector={"float32": [0.1, 0.2, 0.3]},
3
topK=10
4
)