Python SDK for the Dermalytics API - Skincare Ingredient Analysis and Safety Ratings.
This SDK is currently in alpha. The API is functional but may have breaking changes in future versions. Use with caution in production environments.
pip install dermalyticsfrom dermalytics import Dermalytics
# Initialize the client
client = Dermalytics(api_key="your_api_key_here")
# Get ingredient details
ingredient = client.get_ingredient("niacinamide")
print(ingredient)
# {
# "name": "niacinamide",
# "severity": "safe",
# "description": "...",
# "comedogenicity": 0,
# "irritancy": 0,
# "formula": None,
# "category": "Vitamins", # or null
# "synonyms": ["nicotinamide"],
# "credits_remaining": 99,
# # ... cas_no, ec_no, ph_eur_name, functions, etc.
# }
# Analyze a product
analysis = client.analyze_product([
"Aqua",
"Glycerin",
"Niacinamide",
"Salicylic Acid",
"Hyaluronic Acid"
])
print(analysis)
# {
# "safety_status": "safe",
# "ingredients": [
# {
# "name": "Aqua",
# "found": True,
# "severity": "safe",
# "category": "Solvent",
# # ...same detail fields as lookup
# }
# ],
# "credits_remaining": 99,
# }Initialize the Dermalytics API client.
Parameters:
api_key(str): Your Dermalytics API keybase_url(str, optional): Base URL for the API (defaults tohttps://api.dermalytics.dev)
Raises:
ValidationError: If API key is missing or invalid
Get detailed information about a specific ingredient.
Parameters:
name(str): The name of the ingredient to look up (e.g., "niacinamide")
Returns:
Ingredient: Matches OpenAPIIngredientResponse: detail fields above plusname,severity,category(string ornull),synonyms, andcredits_remaining.
Raises:
ValidationError: Invalid input or HTTP 400AuthenticationError: HTTP 401 / 403InsufficientCreditsError: HTTP 402NotFoundError: HTTP 404 (ingredient not found; no credit charged)RateLimitError: HTTP 429 (if returned by the service)APIError: Server or other errors (e.g. 500)
Analyze a complete product formulation.
Parameters:
ingredients(List[str]): List of ingredient names in the product
Returns:
ProductAnalysis: Matches OpenAPIAnalyzeResponse:safety_status(Severity),ingredients(array ofIngredientAnalysis), andcredits_remaining.
Raises:
ValidationError: Invalid body or HTTP 400 (no analyze charge on validation error per API docs)AuthenticationError: HTTP 401 / 403InsufficientCreditsError: HTTP 402RateLimitError: HTTP 429 (if returned by the service)APIError: Server or other errors (e.g. 500)
The SDK provides comprehensive error handling with specific error classes for different scenarios:
from dermalytics import (
DermalyticsError,
APIError,
AuthenticationError,
InsufficientCreditsError,
NotFoundError,
RateLimitError,
ValidationError,
)
try:
ingredient = client.get_ingredient("niacinamide")
except NotFoundError:
print("Ingredient not found")
except AuthenticationError:
print("Invalid API key")
except InsufficientCreditsError:
print("Not enough credits")
except RateLimitError:
print("Rate limit exceeded")
except ValidationError as e:
print(f"Invalid input: {e.message}")
except APIError as e:
print(f"API error: {e.message}")
except DermalyticsError as e:
print(f"Dermalytics error: {e.message}")DermalyticsError- Base error class for all SDK errorsAPIError- General API errors (server errors, network issues, invalid responses)AuthenticationError- Authentication failures (401, 403)InsufficientCreditsError- Insufficient credits (402)NotFoundError- Resource not found (404)RateLimitError- Rate limit exceeded (429)ValidationError- Invalid request data (400, invalid input parameters)
API error bodies follow ErrorResponse: nested error with at least code and message (and optional type). The client surfaces the message string on the exception.
- Clone the repository:
git clone https://github.com/dermalytics-dev/dermalytics-python.git
cd dermalytics-python- Install development dependencies:
pip install -r requirements.txt- Install the package in development mode:
pip install -e .pytestblack dermalytics testsmypy dermalyticsContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
The MIT License allows you to:
- ✅ Use the code commercially
- ✅ Modify the code
- ✅ Distribute the code
- ✅ Use privately
- ✅ Include in proprietary software
You must:
- Include the original copyright notice
- Include the license text
For support, email support@dermalytics.dev or open an issue on GitHub.