Skip to main content

Sites

Sites

toothfairyai@latest…

Manager for sites operations.

This manager provides methods to create, update, and manage sites.

Example:

>>> client = ToothFairyClient(api_key="...", workspace_id="...")
>>> site = client.sites.get(...)

Accessed via client.sites.

Methods

MethodHTTPEndpoint
updatePOSTPOST /site/update
deleteDELETEDELETE /site/delete/{site_id}
getGETGET /site/get/{site_id}
listGETGET /site/list
get_activederived
get_by_statusderived
searchderived

update

Update a site.

def update(site_id: str) -> Site

Endpoint: POST /site/update · API service

Request fields

FieldTypeRequiredDescription
idstringyesUnique identifier
workspaceidstringnoUnique workspace identifier (UUID v4)
descriptionstringnoDetailed description of purpose and capabilities
namestringnoName of the resource
freeRoamingbooleannoWhether the crawler can roam beyond allowed paths
useProxybooleannoWhether a proxy is used for crawling
extractImagesbooleannoWhether images are extracted during crawling
imgRetrievalPromptstringnoPrompt used for image retrieval/extraction
scrapingCyclestringnoScraping cycle in hours: 0 (never), 24 (daily), 72 (3-day), or 168 (weekly)

Allowed: 0, 24, 72, 168 | | url | string | no | Public URL of the website to crawl/index | | customSitemap | string | no | Custom sitemap URL for crawling | | topics | string | no | JSON-encoded list of topics associated with the chat | | metadata | string | no | Arbitrary metadata key-value pairs (JSON) | | allowedPaths | string | no | List of URL paths allowed for crawling | | status | string | no | Current status of the resource

Allowed: active, inactive, pending, syncing, readyForValidation, inProgress | | validationToken | string | no | Token used for domain ownership validation | | skipOwnerValidation | boolean | no | Whether domain ownership validation is skipped | | lastValidationDate | string | no | Date of the last domain validation | | lastValidationRequested | string | no | Date validation was last requested | | siteTree | string | no | JSON-encoded site tree structure | | lastScraped | string | no | Date the site was last scraped | | completion_percentage | string | no | Percentage of site indexing completion | | scapablePages | integer | no | Number of pages that can be scraped | | scrapedPagesCount | integer | no | Number of pages scraped | | createdBy | string | no | ID of the user who created this resource | | updatedBy | string | no | ID of the user who last updated this resource |

The Python SDK accepts snake_case keyword arguments and converts them to the camelCase wire fields shown above.

Response fields

FieldTypeDescription
idstringUnique identifier for the site
namestringName of the resource
descriptionstringSite description
urlstringPublic URL of the website to crawl/index
customSitemapstringCustom sitemap URL for crawling
workspaceIDstringUnique workspace identifier (UUID v4)
topicsobjectAssociated topics
statusstringCurrent status of the resource

Allowed: noDomain, noAnswer, active, syncing, inactive, invalidToken, failed, pending, inProgress, validationTokenCreationError, readyForValidation, tokenRequested, noSitemap | | lastValidationDate | string | Last validation timestamp | | lastValidationRequested | string | Date validation was last requested | | validationToken | string | Site validation token | | allowedPaths | array<string> | Allowed crawling paths | | siteTree | object | JSON-encoded site tree structure | | lastScraped | string | Date the site was last scraped | | skipOwnerValidation | boolean | Whether domain ownership validation is skipped | | useProxy | boolean | Whether a proxy is used for crawling | | completion_percentage | number | Site processing completion percentage | | extractImages | boolean | Whether images are extracted during crawling | | freeRoaming | boolean | Whether the crawler can roam beyond allowed paths | | scrapingCycle | integer | Scraping cycle in hours: 0 (never), 24 (daily), 72 (3-day), or 168 (weekly) | | imgRetrievalPrompt | string | Prompt used for image retrieval/extraction | | metadata | object | Arbitrary metadata key-value pairs (JSON) | | createdBy | string | ID of the user who created this resource | | updatedBy | string | ID of the user who last updated this resource | | scapablePages | integer | Number of pages that can be scraped | | scrapedPagesCount | integer | Number of pages scraped | | createdAt | string | Timestamp when this resource was created | | updatedAt | string | Timestamp when this resource was last updated |

Example

client.sites.update(site_id="agent-id")

delete

Delete a site.

def delete(site_id: str) -> Dict[str, bool]

Endpoint: DELETE /site/delete/{site_id} · API service

Response fields

FieldTypeDescription
successbooleanOperation success status
dataobjectResponse data
messagestringOptional success message

Example

client.sites.delete(site_id="agent-id")

get

Get a site by ID.

def get(site_id: str) -> Site

Endpoint: GET /site/get/{site_id} · API service

Response

Returns the Site object — fields documented in the update section above.

Example

client.sites.get(site_id="agent-id")

list

List all sites.

def list(
limit: Optional[int] = None,
offset: Optional[int] = None
) -> ListResponse

Endpoint: GET /site/list · API service

Example

client.sites.list()

get_active

Get all active sites.

def get_active() -> List[Site]

Derived method — delegates to another SDK call and performs no direct HTTP request.

Example

client.sites.get_active()

get_by_status

Get sites by status.

def get_by_status(status: str) -> List[Site]

Derived method — delegates to another SDK call and performs no direct HTTP request.

Example

client.sites.get_by_status(status="…")

Search sites by name.

def search(search_term: str) -> List[Site]

Derived method — delegates to another SDK call and performs no direct HTTP request.

Example

client.sites.search(search_term="…")