{
  "openapi": "3.0.0",
  "info": {
    "title": "Pinterest API",
    "description": "Read public Pinterest data — search pins, fetch pin and board details, and list user boards.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.aisa.one/apis/v1"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "AIsa API key. Get yours at https://aisa.one"
      }
    },
    "schemas": {
      "AIsaSocialError": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "credits_remaining": {
            "type": "integer"
          },
          "error": {
            "type": "string"
          },
          "errorStatus": {
            "type": "integer"
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": true
      },
      "PinterestPinsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "credits_remaining": {
            "type": "integer"
          },
          "pins": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "cursor": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": true
      },
      "PinterestPinResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "credits_remaining": {
            "type": "integer"
          },
          "entityId": {
            "type": "string"
          },
          "pinner": {
            "type": "object",
            "additionalProperties": true
          },
          "originPinner": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true
          },
          "description": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "repinCount": {
            "type": "integer"
          },
          "totalReactionCount": {
            "type": "integer"
          }
        },
        "additionalProperties": true
      },
      "PinterestBoardsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "credits_remaining": {
            "type": "integer"
          },
          "boards": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "cursor": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": true
      }
    }
  },
  "paths": {
    "/pinterest/search": {
      "get": {
        "x-aisa-pricing": {
          "model": "dynamic",
          "currency": "USD",
          "basis": "provider_cost x 2",
          "nominal_usd": 0.012,
          "observed_usd": {
            "min": 0.00376,
            "p50": 0.012,
            "p95": 0.012,
            "max": 0.012
          },
          "cost_drivers": [
            {
              "param": "records returned",
              "effect": "charge scales with number of records returned"
            }
          ],
          "cost_tier": "variable",
          "note": "nominal_usd is a static reference, NOT a guaranteed minimum; actual charge = provider_cost x multiplier and can be higher or lower"
        },
        "tags": [
          "Pinterest API"
        ],
        "operationId": "get_pinterest_search",
        "summary": "Search",
        "description": "Searches Pinterest for pins matching a keyword and returns pins plus a cursor to page. Each pin carries id, url, title, description, grid_title, created_at, images in five sizes (170x, 236x, 474x, 736x, orig), link, domain, board (name, url, pin_count) and pinner (username). Measured at about 110 KB for 17 pins; trim=true cuts that to 28 KB and keeps six fields per pin — id, url, description, created_at, images and pinner — dropping title, link, board and domain, so only skip trim when you need those. The board.url on each result feeds get_pinterest_board; for one pin's engagement counts use get_pinterest_pin.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "description": "Search query",
            "schema": {
              "type": "string"
            },
            "example": "Italian Pot Roast"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Cursor",
            "schema": {
              "type": "string"
            },
            "example": "Y2JVSG81V2sxcmNHRlpWM1J..."
          },
          {
            "name": "trim",
            "in": "query",
            "required": false,
            "description": "Set to true for a trimmed down version of the response",
            "schema": {
              "type": "boolean"
            },
            "example": "false"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "success": true,
                  "pins": [
                    {
                      "id": "643874078015272259",
                      "url": "https://www.pinterest.com/pin/643874078015272259",
                      "description": "#cute #animal #dog #puppy #pfp #icon #dogpfp #silly #cutepuppy #bordercollie #fyp #trend",
                      "created_at": "Tue, 10 Jun 2025 21:45:32 +0000",
                      "pinner": {
                        "node_id": "VXNlcjo2NDM4NzQyMTUzODQxMzkwMTg=",
                        "full_name": "Annika Strøm",
                        "is_ads_only_profile": false,
                        "username": "annikastrom2",
                        "image_medium_url": "https://i.pinimg.com/75x75_RS/60/d5/a8/60d5a8405ec70c5c46b677186c626587.jpg",
                        "is_primary_website_verified": false,
                        "follower_count": 2,
                        "ads_only_profile_site": null,
                        "id": "643874215384139018",
                        "is_verified_merchant": false,
                        "image_large_url": "https://i.pinimg.com/140x140_RS/60/d5/a8/60d5a8405ec70c5c46b677186c626587.jpg",
                        "verified_identity": {},
                        "image_small_url": "https://i.pinimg.com/30x30_RS/60/d5/a8/60d5a8405ec70c5c46b677186c626587.jpg"
                      },
                      "images": {
                        "170x": {
                          "width": 236,
                          "height": 312,
                          "url": "https://i.pinimg.com/236x/a7/d6/dc/a7d6dced1ee95c11a150dcf2f1c6e05f.jpg"
                        },
                        "236x": {
                          "width": 236,
                          "height": 312,
                          "url": "https://i.pinimg.com/236x/a7/d6/dc/a7d6dced1ee95c11a150dcf2f1c6e05f.jpg"
                        },
                        "474x": {
                          "width": 474,
                          "height": 626,
                          "url": "https://i.pinimg.com/474x/a7/d6/dc/a7d6dced1ee95c11a150dcf2f1c6e05f.jpg"
                        },
                        "736x": {
                          "width": 736,
                          "height": 973,
                          "url": "https://i.pinimg.com/736x/a7/d6/dc/a7d6dced1ee95c11a150dcf2f1c6e05f.jpg"
                        },
                        "orig": {
                          "width": 946,
                          "height": 1251,
                          "url": "https://i.pinimg.com/originals/a7/d6/dc/a7d6dced1ee95c11a150dcf2f1c6e05f.jpg"
                        }
                      }
                    }
                  ],
                  "cursor": "Y2JVSG81V2sxcmNHRlpWM1J5VFVad1ZsWl..."
                },
                "schema": {
                  "$ref": "#/components/schemas/PinterestPinsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/pinterest/pin": {
      "get": {
        "x-aisa-pricing": {
          "model": "dynamic",
          "currency": "USD",
          "basis": "provider_cost x 2",
          "nominal_usd": 0.012,
          "observed_usd": {
            "min": 0.012,
            "p50": 0.012,
            "p95": 0.012,
            "max": 0.012
          },
          "cost_drivers": [
            {
              "param": "records returned",
              "effect": "charge scales with number of records returned"
            }
          ],
          "cost_tier": "variable",
          "note": "nominal_usd is a static reference, NOT a guaranteed minimum; actual charge = provider_cost x multiplier and can be higher or lower"
        },
        "tags": [
          "Pinterest API"
        ],
        "operationId": "get_pinterest_pin",
        "summary": "Pin",
        "description": "Fetches one pin by URL, of the form pinterest.com/pin/<id>. The response is a different shape from search results: camelCase fields including entityId, description, category, totalReactionCount, aggregatedPinData, richMetadata, pinner, originPinner and genAiTopics. Measured at 12.5 KB, the smallest full response in this API; trim=true reduces it to 1.6 KB, keeping entityId, description, createdAt, pinner, originPinner, nativeCreator, shareCount, repinCount and totalReactionCount while dropping richMetadata and category. To find pins by keyword use get_pinterest_search; to page through the board a pin sits on use get_pinterest_board. Only standard numeric pin URLs resolve: of 12 search results fed straight back, the 3 whose URL ended in a shortcode (dwA0UYrl style) all answered 404 and one numeric id did too, so check for a numeric trailing id before calling and expect occasional 404s on deleted pins.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Pinterest pin URL",
            "schema": {
              "type": "string"
            },
            "example": "https://www.pinterest.com/pin/1124351863225567517/"
          },
          {
            "name": "trim",
            "in": "query",
            "required": false,
            "description": "Set to true for a trimmed down version of the response",
            "schema": {
              "type": "boolean"
            },
            "example": "false"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "success": true,
                  "entityId": "36662184461578355",
                  "seoAltText": "a small brown dog sitting in the back seat of a car with its head hanging out",
                  "originPinner": {
                    "entityId": "1144125617743372495",
                    "id": "VXNlcjoxMTQ0MTI1NjE3NzQzMzcyNDk1",
                    "username": "Chloe_hi15",
                    "imageMediumUrl": "https://i.pinimg.com/75x75_RS/90/99/6f/90996f6eac9c9fd4836fba948699fd28.jpg",
                    "blockedByMe": false,
                    "explicitlyFollowedByMe": false,
                    "followerCount": 55,
                    "fullName": "Chloe Marie Monroe",
                    "imageLargeUrl": "https://i.pinimg.com/140x140_RS/90/99/6f/90996f6eac9c9fd4836fba948699fd28.jpg",
                    "imageSmallUrl": "https://i.pinimg.com/30x30_RS/90/99/6f/90996f6eac9c9fd4836fba948699fd28.jpg",
                    "isVerifiedMerchant": false,
                    "verifiedIdentity": {
                      "verified": null
                    }
                  },
                  "pinner": {
                    "blockedByMe": false,
                    "id": "VXNlcjozNjY2MjMyMTg3NDk5NjcxNQ==",
                    "entityId": "36662321874996715",
                    "__typename": "User",
                    "fullName": "Crystal Catlett",
                    "imageSmallUrl": "https://i.pinimg.com/30x30_RS/51/76/82/5176824c31aaeec633f0f09bf1ca12e4.jpg",
                    "imageLargeUrl": "https://i.pinimg.com/140x140_RS/51/76/82/5176824c31aaeec633f0f09bf1ca12e4.jpg",
                    "explicitlyFollowedByMe": false,
                    "username": "cc1025",
                    "imageMediumUrl": "https://i.pinimg.com/75x75_RS/51/76/82/5176824c31aaeec633f0f09bf1ca12e4.jpg",
                    "firstName": "Crystal",
                    "followerCount": 347,
                    "isVerifiedMerchant": false,
                    "verifiedIdentity": {
                      "verified": null
                    }
                  },
                  "imageSpec_orig": {
                    "url": "https://i.pinimg.com/originals/71/5c/5d/715c5d48feb038e16f48a28e6f8ca1f3.jpg"
                  },
                  "description": " ",
                  "shareCount": 0,
                  "nativeCreator": null,
                  "createdAt": "Mon, 09 Jun 2025 04:04:22 +0000",
                  "repinCount": 88,
                  "totalReactionCount": 88
                },
                "schema": {
                  "$ref": "#/components/schemas/PinterestPinResponse"
                }
              }
            }
          }
        }
      }
    },
    "/pinterest/board": {
      "get": {
        "x-aisa-pricing": {
          "model": "dynamic",
          "currency": "USD",
          "basis": "provider_cost x 2",
          "nominal_usd": 0.012,
          "observed_usd": {
            "min": 0.012,
            "max": 0.012
          },
          "cost_drivers": [
            {
              "param": "records returned",
              "effect": "charge scales with number of records returned"
            }
          ],
          "cost_tier": "variable",
          "note": "nominal_usd is a static reference, NOT a guaranteed minimum; actual charge = provider_cost x multiplier and can be higher or lower"
        },
        "tags": [
          "Pinterest API"
        ],
        "operationId": "get_pinterest_board",
        "summary": "Board",
        "description": "Returns one page of pins from a board URL, with a cursor to page. Board pins carry a third field subset, different from both search results and pin detail: node_id, link, domain, rich_summary, seo_url, board and auto_alt_text among them. Measured at 104 KB for 16 pins; trim=true cuts it to 28 KB, keeping per pin id, title, description, link, domain, board, pinner, alt_text, rich_summary and reaction_counts. Board URLs come from board.url on search results — relative, like /agkelsey/the-apartment/, so prefix https://www.pinterest.com — or from get_pinterest_user_boards. For a user's board list rather than one board's pins, use get_pinterest_user_boards.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "The URL of the board to get",
            "schema": {
              "type": "string"
            },
            "example": "https://www.pinterest.com/lizmrodgers/moms-night/"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor to get the next page of results",
            "schema": {
              "type": "string"
            },
            "example": "Y2JURlEwTWsxNlp6Vk9SR2MwV...."
          },
          {
            "name": "trim",
            "in": "query",
            "required": false,
            "description": "Set to true for a trimmed down version of the response",
            "schema": {
              "type": "boolean"
            },
            "example": "false"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "success": true,
                  "pins": [
                    {
                      "id": "549579960798399243",
                      "link": "https://gekbuzz.com/crispy-air-fryer-pizza-rolls-recipe/",
                      "title": "Crispy Air Fryer Pizza Rolls Recipe -",
                      "board": {
                        "node_id": "Qm9hcmQ6NTQ5NTgwMDI5NDY3NTc3NDM2",
                        "followed_by_me": false,
                        "owner": {
                          "node_id": "VXNlcjo1NDk1ODAwOTgxODYwMzM3MzU=",
                          "image_small_url": "https://s.pinimg.com/images/user/default_30.png",
                          "is_primary_website_verified": true,
                          "is_verified_merchant": false,
                          "full_name": "Gekbuzz",
                          "username": "sharat24k",
                          "image_medium_url": "https://s.pinimg.com/images/user/default_75.png",
                          "id": "549580098186033735",
                          "verified_identity": {}
                        },
                        "privacy": "public",
                        "is_collaborative": false,
                        "url": "/sharat24k/pizza-recipes/",
                        "layout": "default",
                        "type": "board",
                        "name": "Pizza Recipes",
                        "id": "549580029467577436",
                        "collaborated_by_me": false
                      },
                      "unified_user_note": "Craving a quick snack that combines cheesy goodness and crispy texture? These air fryer pizza rolls are the answer! Perfect for movie nights, parties, or just a casual treat, they pack all the flavor of your favorite pizza into a bite-sized delight. Imagine biting into a perfectly golden roll where melty cheese and zesty sauce meld together. The air fryer gives these pizza rolls a satisfying crunch without the extra oil, making them a healthier option that doesn’t skimp on taste.",
                      "alt_text": "Crispy air fryer pizza rolls served with marinara sauce for dipping on a plate.",
                      "rich_summary": {
                        "actions": [],
                        "products": [],
                        "apple_touch_icon_link": null,
                        "type_name": "article",
                        "type": "richpingriddata",
                        "id": "5aa12f54bef882f6f3cdd77234027e25",
                        "favicon_link": "https://s.pinimg.com/images/default_rich_pin_favicon.png",
                        "url": "https://gekbuzz.com/crispy-air-fryer-pizza-rolls-recipe/",
                        "display_name": "Crispy Air Fryer Pizza Rolls Recipe -",
                        "favicon_images": {
                          "orig": "https://s.pinimg.com/images/default_rich_pin_favicon.png"
                        },
                        "display_description": "Craving a quick snack that combines cheesy goodness and crispy texture? These air fryer pizza rolls are the answer! Perfect for movie nights, parties, or just a casual treat, they pack all the flavor of your favorite pizza into a bite-sized delight. Imagine biting into a perfectly golden roll where melty cheese and zesty sauce […]",
                        "apple_touch_icon_images": null,
                        "site_name": "gekbuzz.com"
                      },
                      "reaction_counts": {},
                      "pinner": {
                        "node_id": "VXNlcjo1NDk1ODAwOTgxODYwMzM3MzU=",
                        "image_small_url": "https://s.pinimg.com/images/user/default_30.png",
                        "is_primary_website_verified": true,
                        "is_verified_merchant": false,
                        "full_name": "Gekbuzz",
                        "username": "sharat24k",
                        "image_medium_url": "https://s.pinimg.com/images/user/default_75.png",
                        "id": "549580098186033735",
                        "verified_identity": {}
                      },
                      "description": "Craving a quick snack that combines cheesy goodness and crispy texture? These air fryer pizza rolls are the answer! Perfect for movie nights, parties, or just a casual treat, they pack all the flavor of your favorite pizza into a bite-sized delight. Imagine biting into a perfectly golden roll where melty cheese and zesty sauce meld together. The air fryer gives these pizza rolls a satisfying crunch without the extra oil, making them a healthier option that doesn’t skimp on taste.",
                      "domain": "gekbuzz.com"
                    }
                  ],
                  "cursor": "Y2JURlEwTVU1RWF6Rk9lbXMxV...."
                },
                "schema": {
                  "$ref": "#/components/schemas/PinterestPinsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/pinterest/user/boards": {
      "get": {
        "x-aisa-pricing": {
          "model": "dynamic",
          "currency": "USD",
          "basis": "provider_cost x 2",
          "nominal_usd": 0.012,
          "observed_usd": {
            "min": 0.00376,
            "p50": 0.012,
            "p95": 0.012,
            "max": 0.012
          },
          "cost_drivers": [
            {
              "param": "records returned",
              "effect": "charge scales with number of records returned"
            }
          ],
          "cost_tier": "variable",
          "note": "nominal_usd is a static reference, NOT a guaranteed minimum; actual charge = provider_cost x multiplier and can be higher or lower"
        },
        "tags": [
          "Pinterest API"
        ],
        "operationId": "get_pinterest_user_boards",
        "summary": "User Boards",
        "description": "Lists a user's public boards by username, with a cursor to page. Each board carries id, name, url, description, pin_count, follower_count, section_count, collaborator_count, privacy, owner, created_at, cover_pin and cover_images. Measured at 59 KB for 10 boards; trim=true collapses it to 3.3 KB — the largest trim ratio in this API — keeping id, name, url, description, pin_count, follower_count, created_at and image_cover_hd_url. The handle is the bare username as it appears in a profile URL (agkelsey, not a full URL). Feed each board's url to get_pinterest_board to read its pins; to search across all of Pinterest use get_pinterest_search.",
        "parameters": [
          {
            "name": "handle",
            "in": "query",
            "required": true,
            "description": "The username of the user to get boards for. (e.g. broadstbullycom from https://www.pinterest.com/broadstbullycom/)",
            "schema": {
              "type": "string"
            },
            "example": "broadstbullycom"
          },
          {
            "name": "trim",
            "in": "query",
            "required": false,
            "description": "Set to true for a trimmed down version of the response",
            "schema": {
              "type": "boolean"
            },
            "example": "false"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "success": true,
                  "boards": [
                    {
                      "id": "549580029467577434",
                      "url": "https://www.pinterest.com/sharat24k/turkey-recipes/",
                      "description": "",
                      "follower_count": 292,
                      "pin_count": 545,
                      "name": "Turkey Recipes",
                      "image_cover_hd_url": "https://i.pinimg.com/474x/45/00/df/4500dfc5bc8bbc15137ff9d9abf04cc1.jpg",
                      "created_at": "Mon, 17 Feb 2025 02:19:26 +0000"
                    }
                  ],
                  "cursor": "LT41NDk1ODAwMjk0Njc1Njc1O...."
                },
                "schema": {
                  "$ref": "#/components/schemas/PinterestBoardsResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}
