Rate limits
Rate limits unless otherwise specified are per project.
datasets endpoints
method |
endpoint |
rate limit |
POST |
/datasets/ |
1/s |
GET |
/datasets/ |
1/s |
GET |
/datasets/{dataset_id} |
1/s |
PUT |
/datasets/{dataset_id} |
1/60s |
DELETE |
/datasets/{dataset_id} |
1/90s |
features endpoints
method |
endpoint |
rate limit |
POST |
/datasets/{dataset_id}/features |
20/s |
GET |
/datasets/{dataset_id}/features/{feature_id} |
20/s |
PUT |
/datasets/{dataset_id}/features/{feature_id} |
20/s |
DELETE |
/datasets/{dataset_id}/features/{feature_id} |
20/s |
search endpoints
method |
endpoint |
rate limit |
POST |
/datasets/{dataset_id}/features/search |
20/s |
GET |
/datasets/{dataset_id}/features/intersect |
20/s |
PUT |
/datasets/{dataset_id}/features/within |
20/s |
DELETE |
/datasets/{dataset_id}/features/contains |
20/s |
tiles endpoints
method |
endpoint |
rate limit |
GET |
/datasets/{dataset_id}/tiles/{z}/{x}/{y}.pbf |
50/s |
The ratelimit are implemented as fastapi dependencies:
project_token_dependency = Depends(AuthenticateKey(product=Products.DATASETS))
@tile_router.get(
"/{dataset_id}/tiles/{z}/{x}/{y}.pbf",
response_class=PBFResponse,
dependencies=[
project_token_dependency,
Depends(ProjectRateLimiter(max_requests=20, expiry=1)),
Depends(get_add_job_to_metrics("DATASET", "tile")),
],
)
async def get_dataset_tile(
response: Response,
dataset_id: UUID,
x: int,
y: int,
z: int,
tile_manager: TileManager = Depends(get_tile_manager),
) -> Response: