# API keys and deploys (/docs/developers/api-keys-and-deploys)

API keys let your servers and deploy pipeline talk to Skavelo. The widget doesn't need one.

## Creating a key [#creating-a-key]

Owners and admins can create keys under **API keys** in the sidebar. Click **New key** and name it after where it will be used, for example "GitHub Actions".

<Callout type="warn" title="Copy your key now">
  The full key is shown only once, when you create it. Store it as a secret in the tool that will use it.
</Callout>

Create a separate key for each place that calls Skavelo, so you can revoke one without affecting the others. To revoke a key, click its trash icon. Anything using it stops working immediately.

## Re-learn after each deploy [#re-learn-after-each-deploy]

Add this as the last step of your deploy pipeline, with the key stored as a secret named `SKAVELO_API_KEY`. Skavelo re-reads the pages that changed and skips the rest.

```bash
curl -X POST https://api.skavelo.com/api/v1/agents/YOUR_AGENT_ID/learn \
  -H "Authorization: Bearer $SKAVELO_API_KEY"
```

The agent ID is on each agent's **Install** tab. The run appears on the agent's Learning tab as **After a deploy**.

<Accordions>
<Accordion title="Example: GitHub Actions">

```yaml
- name: Re-learn Skavelo
  run: |
    curl -X POST https://api.skavelo.com/api/v1/agents/${{ vars.SKAVELO_AGENT_ID }}/learn \
      -H "Authorization: Bearer ${{ secrets.SKAVELO_API_KEY }}"
```

</Accordion>
</Accordions>
