SpiderMail Views
5 endpoints from the published OpenAPI import.
List Views
List every view visible to the caller:
- views the caller created (
created_by = current_user_id), AND - NULL-owned views (client-wide, Bearer-created), AND
is_shared = TRUEviews ifinclude_shared=true.
Session users see their own views plus team-shared ones by default. Bearer-token callers see all NULL-owned views (there is no per-user scope).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
include_shared | query | boolean | false | Include team-shared views. |
format | query | any | false | Output format: json, yaml, or llm |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/mail/views' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/mail/views",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/mail/views", {
method: "GET",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://spideriq.ai/api/v1/mail/views", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Create View
Create a new saved view. is_shared defaults to false (default-private). created_by is filled from the session user; Bearer callers get NULL.
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/mail/views' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"name": "string",
"color": "string",
"filter_config": {
"mailboxes": [
"string"
],
"unread_only": false,
"starred_only": false,
"has_attachments": true,
"from_contains": "string",
"subject_contains": "string",
"labels": [
"string"
],
"received_after": "string",
"received_before": "string",
"outreach_classification": "string",
"direction": "string"
},
"column_config": [
{
"key": "string",
"width": 0,
"visible": true
}
],
"sort_by": "date",
"sort_direction": "DESC",
"is_shared": false
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/mail/views",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"name": "string", "color": "string", "filter_config": {"mailboxes": ["string"], "unread_only": false, "starred_only": false, "has_attachments": true, "from_contains": "string", "subject_contains": "string", "labels": ["string"], "received_after": "string", "received_before": "string", "outreach_classification": "string", "direction": "string"}, "column_config": [{"key": "string", "width": 0, "visible": true}], "sort_by": "date", "sort_direction": "DESC", "is_shared": false},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/mail/views", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"name": "string", "color": "string", "filter_config": {"mailboxes": ["string"], "unread_only": false, "starred_only": false, "has_attachments": true, "from_contains": "string", "subject_contains": "string", "labels": ["string"], "received_after": "string", "received_before": "string", "outreach_classification": "string", "direction": "string"}, "column_config": [{"key": "string", "width": 0, "visible": true}], "sort_by": "date", "sort_direction": "DESC", "is_shared": false})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"name": "string", "color": "string", "filter_config": {"mailboxes": ["string"], "unread_only": false, "starred_only": false, "has_attachments": true, "from_contains": "string", "subject_contains": "string", "labels": ["string"], "received_after": "string", "received_before": "string", "outreach_classification": "string", "direction": "string"}, "column_config": [{"key": "string", "width": 0, "visible": true}], "sort_by": "date", "sort_direction": "DESC", "is_shared": false}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/mail/views", body)
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
201 | Successful Response |
422 | Validation Error |
Get View
Get one saved view. Use ?format=yaml for agent-friendly output.
Card FMT.1 listed eleven lying routes, derived from the skill schema — which does not advertise format here. The MCP get_view tool does (packages/mcp-tools/src/mail/mail.ts), so this route had the same silent-200 defect on the surface the card did not read. It surfaced from the registry-wide parity guard, not from the list.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
view_id | path | integer | true | |
format | query | any | false | Output format: json, yaml, or llm |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/mail/views/{view_id}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/mail/views/{view_id}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/mail/views/{view_id}", {
method: "GET",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://spideriq.ai/api/v1/mail/views/{view_id}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Update View
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
view_id | path | integer | true |
Try it
Examples
cURL
curl -X PATCH 'https://spideriq.ai/api/v1/mail/views/{view_id}' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"name": "string",
"color": "string",
"filter_config": {
"mailboxes": [
"string"
],
"unread_only": false,
"starred_only": false,
"has_attachments": true,
"from_contains": "string",
"subject_contains": "string",
"labels": [
"string"
],
"received_after": "string",
"received_before": "string",
"outreach_classification": "string",
"direction": "string"
},
"column_config": [
{
"key": "string",
"width": 0,
"visible": true
}
],
"sort_by": "string",
"sort_direction": "string",
"is_shared": true
}'Python
import httpx
resp = httpx.patch(
"https://spideriq.ai/api/v1/mail/views/{view_id}",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"name": "string", "color": "string", "filter_config": {"mailboxes": ["string"], "unread_only": false, "starred_only": false, "has_attachments": true, "from_contains": "string", "subject_contains": "string", "labels": ["string"], "received_after": "string", "received_before": "string", "outreach_classification": "string", "direction": "string"}, "column_config": [{"key": "string", "width": 0, "visible": true}], "sort_by": "string", "sort_direction": "string", "is_shared": true},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/mail/views/{view_id}", {
method: "PATCH",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"name": "string", "color": "string", "filter_config": {"mailboxes": ["string"], "unread_only": false, "starred_only": false, "has_attachments": true, "from_contains": "string", "subject_contains": "string", "labels": ["string"], "received_after": "string", "received_before": "string", "outreach_classification": "string", "direction": "string"}, "column_config": [{"key": "string", "width": 0, "visible": true}], "sort_by": "string", "sort_direction": "string", "is_shared": true})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"name": "string", "color": "string", "filter_config": {"mailboxes": ["string"], "unread_only": false, "starred_only": false, "has_attachments": true, "from_contains": "string", "subject_contains": "string", "labels": ["string"], "received_after": "string", "received_before": "string", "outreach_classification": "string", "direction": "string"}, "column_config": [{"key": "string", "width": 0, "visible": true}], "sort_by": "string", "sort_direction": "string", "is_shared": true}`)
req, _ := http.NewRequest("PATCH", "https://spideriq.ai/api/v1/mail/views/{view_id}", body)
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Delete View
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
view_id | path | integer | true |
Try it
Examples
cURL
curl -X DELETE 'https://spideriq.ai/api/v1/mail/views/{view_id}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.delete(
"https://spideriq.ai/api/v1/mail/views/{view_id}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/mail/views/{view_id}", {
method: "DELETE",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://spideriq.ai/api/v1/mail/views/{view_id}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
204 | Successful Response |
422 | Validation Error |