SkillAgentSearch skills...

SkincareAPI

An api of over 2,000 popular skincare products in the US, Korea, and Japan. Users can search by brand, product name, or any ingredient and receive a list of products matching. User can also add to the database or paginate their results. Made with Ruby on rails as part of the Capstone for Ada Developers Academy.

Install / Use

/learn @LauraAddams/SkincareAPI
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

SkincareAPI

SkincareAPI is a skincare product API. The API was created as part of a capstone project for Ada Developers Academy.

The idea is to provide users with a catalog of products with brand, name, and ingredients that can be used for test projects.

API

Base URL

GET https://skincare-api.herokuapp.com

Products

GET /products

Returns a list of all products

[
    {
        "id": 1,
        "brand": "amorepacific",
        "name": "age spot brightening pen",
        "ingredient_list": [
            "water",
            "butylene glycol",
            "alcohol",
        ]
    },
    {
        "id": 2,
        "brand": "amorepacific",
        "name": "all day balancing care serum",
        "ingredient_list": [
            "camellia sinensis leaf water",
            "phyllostachis bambusoides juice",
            "panax ginseng root extract",
        ]
    },
    {
        "id": 3,
        "brand": "amorepacific",
        "name": "bio-enzyme refining complex",
        "ingredient_list": [
            "panax ginseng root extract",
            "cyclopentasiloxane",
            "dimethicone",
        ]
    },
]

GET /products/1

Returns a single product by id number

{
    "id": 1,
    "brand": "amorepacific",
    "name": "age spot brightening pen",
    "ingredient_list": [
        "water",
        "butylene glycol",
        "alcohol",
        "dipropylene glycol",
        "peg-75",
        "glycereth-26",
        "ascorbyl glucoside",
    ]
}

POST /products

Adds a product, new ingredients are added to the ingredient database
Accepted params (all fields must be present):

  • brand (string)
  • name (string)
  • ingredients (string, separated by commas) ex. "water,alcohol,citric acid,..."

Ingredients

GET /ingredients

Returns a list of all unique ingredients

[
    {
        "id": 1,
        "ingredient": "water"
    },
    {
        "id": 2,
        "ingredient": "butylene glycol"
    },
    {
        "id": 3,
        "ingredient": "alcohol"
    },
]

Queries

Products and ingredients can both be queried at their singular route

GET /product?q=rose+water

Searches brand, name, and ingredients for LIKE values

[
    {
        "id": 564,
        "brand": "lioele",
        "name": "a.c control mousse cleanser trouble hunter",
        "ingredient_list": [
            "water",
            "ammonium lauryl sulfate",
            "cocamidopropyl betaine",
            "peg-8",
            "polysorbate 20",
            "salicylic acid",
            "fragrance",
            "henoxyethanol",
            "potassium hydroxide",
            "methylparaben",
            "sodium methyl cocoyl taurate",
            "sodium citrate",
            "tetrasodium edta",
            "dipotassium glycyrrhizate",
            "tocopheryl acetate",
            "benzophenone-4",
            "rose water",
            "camillia sinensis leaf extract."
        ]
    },
]

GET /ingredient?q=rose+water

Searches ingredient for LIKE values

[
    {
        "id": 2493,
        "ingredient": "rose water"
    },
    {
        "id": 3103,
        "ingredient": "damask rose water"
    }
]

Query Pagination

Addition params can be sent for pagination results

  • limit (default 10)
  • page

Example

GET https://skincare-api.herokuapp.com/product?q=rose&limit=25&page=1

Cheatsheet

| Method | Endpoint | Description | | ----- | ---------- | ------ | | GET | /products | Returns an array of product| | GET | /products/:id | Returns an object with matching :id. If the id doesn't exist response will be 404| | POST | /products | Adds a new product with the correct params. Invalid entries response will be 400| | GET | /ingredients | Returns an array of ingredient| | GET | /product?q= | Returns an array of searched product. Empty array for no results (pagination params: limit, page)| | GET | /ingredient?q= | Returns an array of searched ingredient. Empty array for no results (pagination params: limit, page)|

Related Skills

View on GitHub
GitHub Stars125
CategoryData
Updated12d ago
Forks29

Languages

Ruby

Security Score

80/100

Audited on Mar 25, 2026

No findings