{"files":{"SKILL.md":"---\nname: botify-api\ndescription: \"Botify API skill. Use when working with Botify for analyses, projects. Covers 26 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Botify API\nAPI version: 1.0.0\n\n## Auth\nApiKey Authorization in header\n\n## Base URL\nhttps://api.botify.com/v1\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /analyses/{username}/{project_slug} -- list all analyses for a project\n3. POST /analyses/{username}/{project_slug}/{analysis_slug}/urls -- create first url\n\n## Endpoints\n26 endpoints across 2 groups. See references/api-spec.lap for full details.\n\n### Analyses\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /analyses/{username}/{project_slug} | List all analyses for a project |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug} | Get an Analysis detail |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/crawl_statistics | Return global statistics for an analysis |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/crawl_statistics/time | Return crawl statistics grouped by time frequency (1 min, 5 mins or 60 min) |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/crawl_statistics/urls/{list_type} | Return a list of 1000 latest URLs crawled (all crawled URLs or only URLS with HTTP errors) |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/features/ganalytics/orphan_urls/{medium}/{source} | List of Orphan URLs |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/features/links/percentiles | Get inlinks percentiles |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/features/pagerank/lost | Lost pagerank |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/features/sitemaps/report | Get global information of the sitemaps found (sitemaps indexes, invalid sitemaps urls, etc |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/features/sitemaps/samples/out_of_config | Sample list of URLs which were found in your sitemaps but outside of the |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/features/sitemaps/samples/sitemap_only | Sample list of URLs which were found in your sitemaps, within the project |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/features/top_domains/domains | Top domains |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/features/top_domains/subdomains | Top subddomains |\n| POST | /analyses/{username}/{project_slug}/{analysis_slug}/urls | Executes a query and returns a paginated response |\n| POST | /analyses/{username}/{project_slug}/{analysis_slug}/urls/aggs | Query aggregator |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/urls/datamodel | Gets an Analysis datamodel |\n| POST | /analyses/{username}/{project_slug}/{analysis_slug}/urls/export | Creates a new UrlExport object and starts a task that will export the results into a csv |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/urls/export | A list of the CSV Exports requests and their current status |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/urls/export/{url_export_id} | Checks the status of an CSVUrlExportJob object |\n| POST | /analyses/{username}/{project_slug}/{analysis_slug}/urls/suggested_filters | Return most frequent segments (= suggested patterns in the previous version) |\n| GET | /analyses/{username}/{project_slug}/{analysis_slug}/urls/{url} | Gets the detail of an URL for an analysis |\n\n### Projects\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /projects/{username} | List all active projects for the user |\n| POST | /projects/{username}/{project_slug}/features/url_rewriting/rules_validator | Match and replace parts of a URL based on rules passed in POST data |\n| GET | /projects/{username}/{project_slug}/filters | List all the project's saved filters (each filter's name, ID and filter value) |\n| GET | /projects/{username}/{project_slug}/filters/{identifier} | Retrieves a specific saved filter's name, ID and filter value |\n| POST | /projects/{username}/{project_slug}/urls/aggs | Project Query aggregator |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Get analysis details?\" -> GET /analyses/{username}/{project_slug}\n- \"List all crawl_statistics?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/crawl_statistics\n- \"List all time?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/crawl_statistics/time\n- \"Get url details?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/crawl_statistics/urls/{list_type}\n- \"Get orphan_url details?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/features/ganalytics/orphan_urls/{medium}/{source}\n- \"List all percentiles?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/features/links/percentiles\n- \"List all lost?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/features/pagerank/lost\n- \"List all report?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/features/sitemaps/report\n- \"List all out_of_config?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/features/sitemaps/samples/out_of_config\n- \"List all sitemap_only?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/features/sitemaps/samples/sitemap_only\n- \"List all domains?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/features/top_domains/domains\n- \"List all subdomains?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/features/top_domains/subdomains\n- \"Create a url?\" -> POST /analyses/{username}/{project_slug}/{analysis_slug}/urls\n- \"Create a agg?\" -> POST /analyses/{username}/{project_slug}/{analysis_slug}/urls/aggs\n- \"List all datamodel?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/urls/datamodel\n- \"Create a export?\" -> POST /analyses/{username}/{project_slug}/{analysis_slug}/urls/export\n- \"List all export?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/urls/export\n- \"Get export details?\" -> GET /analyses/{username}/{project_slug}/{analysis_slug}/urls/export/{url_export_id}\n- \"Create a suggested_filter?\" -> POST /analyses/{username}/{project_slug}/{analysis_slug}/urls/suggested_filters\n- \"Get project details?\" -> GET /projects/{username}\n- \"Create a rules_validator?\" -> POST /projects/{username}/{project_slug}/features/url_rewriting/rules_validator\n- \"List all filters?\" -> GET /projects/{username}/{project_slug}/filters\n- \"Get filter details?\" -> GET /projects/{username}/{project_slug}/filters/{identifier}\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n- Create/update endpoints return the modified resource on success\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Botify API\n@base https://api.botify.com/v1\n@version 1.0.0\n@auth ApiKey Authorization in header\n@endpoints 26\n@hint download_for_search\n@toc analyses(21), projects(5)\n\n@group analyses\n@endpoint GET /analyses/{username}/{project_slug}\n@desc List all analyses for a project\n@optional {page: any # Page Number, size: any # Page Size}\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}\n@desc Get an Analysis detail\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/crawl_statistics\n@desc Return global statistics for an analysis\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/crawl_statistics/time\n@desc Return crawl statistics grouped by time frequency (1 min, 5 mins or 60 min)\n@required {frequency: any # Aggregation frequency}\n@optional {limit: any # max number of elements to retrieve}\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/crawl_statistics/urls/{list_type}\n@desc Return a list of 1000 latest URLs crawled (all crawled URLs or only URLS with HTTP errors)\n@returns(200)\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/features/ganalytics/orphan_urls/{medium}/{source}\n@desc List of Orphan URLs\n@optional {page: any # Page Number, size: any # Page Size}\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/features/links/percentiles\n@desc Get inlinks percentiles\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/features/pagerank/lost\n@desc Lost pagerank\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/features/sitemaps/report\n@desc Get global information of the sitemaps found (sitemaps indexes, invalid sitemaps urls, etc\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/features/sitemaps/samples/out_of_config\n@desc Sample list of URLs which were found in your sitemaps but outside of the\n@optional {page: any # Page Number, size: any # Page Size}\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/features/sitemaps/samples/sitemap_only\n@desc Sample list of URLs which were found in your sitemaps, within the project\n@optional {page: any # Page Number, size: any # Page Size}\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/features/top_domains/domains\n@desc Top domains\n@optional {page: any # Page Number, size: any # Page Size}\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/features/top_domains/subdomains\n@desc Top subddomains\n@optional {page: any # Page Number, size: any # Page Size}\n@returns(200) Successful operation\n\n@endpoint POST /analyses/{username}/{project_slug}/{analysis_slug}/urls\n@desc Executes a query and returns a paginated response\n@optional {UrlsQuery: map, area: any # Analysis context to execute the query, page: any # Page Number, size: any # Page Size}\n@returns(200) Successful operation\n\n@endpoint POST /analyses/{username}/{project_slug}/{analysis_slug}/urls/aggs\n@desc Query aggregator\n@optional {UrlsAggsQueries: [map], area: any}\n@returns(200)\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/urls/datamodel\n@desc Gets an Analysis datamodel\n@optional {area: any}\n@returns(200) Successful operation\n\n@endpoint POST /analyses/{username}/{project_slug}/{analysis_slug}/urls/export\n@desc Creates a new UrlExport object and starts a task that will export the results into a csv\n@optional {UrlsQuery: map, area: any}\n@returns(201) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/urls/export\n@desc A list of the CSV Exports requests and their current status\n@optional {page: any # Page Number, size: any # Page Size}\n@returns(200) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/urls/export/{url_export_id}\n@desc Checks the status of an CSVUrlExportJob object\n@returns(200) Successful operation\n\n@endpoint POST /analyses/{username}/{project_slug}/{analysis_slug}/urls/suggested_filters\n@desc Return most frequent segments (= suggested patterns in the previous version)\n@optional {UrlsAggsQuery: map, area: any}\n@returns(201) Successful operation\n\n@endpoint GET /analyses/{username}/{project_slug}/{analysis_slug}/urls/{url}\n@desc Gets the detail of an URL for an analysis\n@optional {fields: any # comma separated list of fields to return (c.f. URLs Datamodel)}\n@returns(200) Successful operation\n\n@endgroup\n\n@group projects\n@endpoint GET /projects/{username}\n@desc List all active projects for the user\n@optional {page: any # Page Number, size: any # Page Size}\n@returns(200) Successful operation\n\n@endpoint POST /projects/{username}/{project_slug}/features/url_rewriting/rules_validator\n@desc Match and replace parts of a URL based on rules passed in POST data\n@returns(201) Successful operation\n\n@endpoint GET /projects/{username}/{project_slug}/filters\n@desc List all the project's saved filters (each filter's name, ID and filter value)\n@optional {page: any # Page Number, size: any # Page Size}\n@returns(200) Successful operation\n\n@endpoint GET /projects/{username}/{project_slug}/filters/{identifier}\n@desc Retrieves a specific saved filter's name, ID and filter value\n@returns(200) Successful operation\n\n@endpoint POST /projects/{username}/{project_slug}/urls/aggs\n@desc Project Query aggregator\n@optional {UrlsAggsQueries: [map], area: any # Analysis context to execute the queries, last_analysis_slug: any # Last analysis on the trend, nb_analyses: any # Max number of analysis to return}\n@returns(201) Successful operation\n\n@endgroup\n\n@end\n"}}