
# 

Scheduling Edge Functions

* * *

The hosted Supabase Platform supports the [`pg_cron` extension](/docs/guides/database/extensions/pgcron), a recurring job scheduler in Postgres.

In combination with the [`pg_net` extension](/docs/guides/database/extensions/pgnet), this allows us to invoke Edge Functions periodically on a set schedule.

To access the auth token securely for your Edge Function call, we recommend storing them in [Supabase Vault](../../database/vault/index.md).

## Examples[#](#examples)

### Invoke an Edge Function every minute[#](#invoke-an-edge-function-every-minute)

Store `project_url` and `anon_key` in Supabase Vault:

```
1select vault.create_secret('https://project-ref.supabase.co', 'project_url');2select vault.create_secret('YOUR_SUPABASE_ANON_KEY', 'anon_key');
```

Make a POST request to a Supabase Edge Function every minute:

```
1select2  cron.schedule(3    'invoke-function-every-minute',4    '* * * * *', -- every minute5    $$6    select7      net.http_post(8          url:= (select decrypted_secret from vault.decrypted_secrets where name = 'project_url') || '/functions/v1/function-name',9          headers:=jsonb_build_object(10            'Content-type', 'application/json',11            'Authorization', 'Bearer ' || (select decrypted_secret from vault.decrypted_secrets where name = 'anon_key')12          ),13          body:=concat('{"time": "', now(), '"}')::jsonb14      ) as request_id;15    $$16  );
```

## Resources[#](#resources)

*   [`pg_net` extension](/docs/guides/database/extensions/pgnet)
*   [`pg_cron` extension](/docs/guides/database/extensions/pgcron)
