Noun Project Icon API

Search, filter, retrieve, and download icons from the Noun Project library.

OpenAPI Specification

noun-project-icon-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Noun Project API V2 Autocomplete Icon API
  description: 'The Noun Project API V2 is an OAuth 1.0a-secured REST API that provides

    access to nearly 10 million royalty-free PNG and SVG icons. The API

    supports icon search with style and line-weight filtering, similar-icon

    lookup, collection browsing, custom hex-color recoloring, multiple

    thumbnail sizes, autocomplete suggestions, per-client blocklists, and

    real-time usage telemetry.


    Built on AWS with documented 99.99% uptime, the API serves more than

    300 million requests per month. All requests must be signed with OAuth

    1.0a using the client key and secret obtained from the Noun Project

    developer portal.

    '
  version: '2.0'
  termsOfService: https://thenounproject.com/legal/api-terms-of-use/
  contact:
    name: Noun Project API Support
    url: https://thenounproject.zendesk.com/
  license:
    name: Royalty-Free Commercial Use
    url: https://thenounproject.com/legal/api-terms-of-use/
  x-generated-from: documentation
  x-last-validated: '2026-05-28'
servers:
- url: https://api.thenounproject.com
  description: Noun Project API production endpoint
security:
- oauth1: []
tags:
- name: Icon
  description: Search, filter, retrieve, and download icons from the Noun Project library.
paths:
  /v2/icon:
    get:
      operationId: searchIcons
      summary: Search Icons
      description: Search the Noun Project icon library by query term with optional filters for style, line weight, public-domain status, and thumbnail size. Returns a paginated list of matching icons.
      tags:
      - Icon
      parameters:
      - name: query
        in: query
        description: Search term used to match icon titles, tags, and descriptions.
        required: true
        schema:
          type: string
        example: rocket
      - name: styles
        in: query
        description: Comma-separated icon styles to filter by. Common values include `solid` and `line`.
        required: false
        schema:
          type: string
        example: solid
      - name: line_weight
        in: query
        description: Line weight in pixels (1-60) at 512-pixel rendering. Only meaningful for line-style icons.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 60
        example: 4
      - name: limit_to_public_domain
        in: query
        description: When true, restricts results to icons released to the public domain.
        required: false
        schema:
          type: boolean
          default: false
        example: false
      - name: thumbnail_size
        in: query
        description: Pixel dimension for returned thumbnail URLs.
        required: false
        schema:
          type: integer
          enum:
          - 42
          - 84
          - 200
          default: 84
        example: 200
      - name: blacklist
        in: query
        description: When true, applies the client's configured blocklist to results.
        required: false
        schema:
          type: boolean
          default: false
        example: true
      - name: include_svg
        in: query
        description: When true, includes raw SVG markup in each icon result.
        required: false
        schema:
          type: boolean
          default: false
        example: false
      - name: limit
        in: query
        description: Maximum number of icons returned per page.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 200
          default: 50
        example: 50
      - name: prev_page
        in: query
        description: Cursor token returned by a prior response for backward pagination.
        required: false
        schema:
          type: string
      - name: next_page
        in: query
        description: Cursor token returned by a prior response for forward pagination.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Paginated icon search results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IconSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      security:
      - oauth1: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v2/icon/{icon_id}:
    get:
      operationId: getIcon
      summary: Get Icon
      description: Retrieve a single icon by its numeric identifier with full metadata.
      tags:
      - Icon
      parameters:
      - $ref: '#/components/parameters/IconId'
      - name: thumbnail_size
        in: query
        description: Pixel dimension for the returned thumbnail URL.
        required: false
        schema:
          type: integer
          enum:
          - 42
          - 84
          - 200
          default: 84
        example: 200
      - name: blacklist
        in: query
        description: When true, returns 404 if the icon is on the client's blocklist.
        required: false
        schema:
          type: boolean
          default: false
        example: true
      responses:
        '200':
          description: Icon details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IconResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      security:
      - oauth1: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v2/icon/{icon_id}/more-like-this:
    get:
      operationId: getSimilarIcons
      summary: Get Similar Icons
      description: Find icons stylistically similar to the supplied icon ID, optionally narrowed by a query term. Used to assemble visually consistent icon sets from a single seed.
      tags:
      - Icon
      parameters:
      - $ref: '#/components/parameters/IconId'
      - name: query
        in: query
        description: Optional search term to narrow similar-icon candidates.
        required: false
        schema:
          type: string
        example: spaceship
      - name: limit_to_public_domain
        in: query
        description: When true, restricts results to icons released to the public domain.
        required: false
        schema:
          type: boolean
          default: false
      - name: thumbnail_size
        in: query
        description: Pixel dimension for returned thumbnail URLs.
        required: false
        schema:
          type: integer
          enum:
          - 42
          - 84
          - 200
          default: 84
      - name: blacklist
        in: query
        description: When true, applies the client's configured blocklist to results.
        required: false
        schema:
          type: boolean
          default: false
      - name: include_svg
        in: query
        description: When true, includes raw SVG markup in each icon result.
        required: false
        schema:
          type: boolean
          default: false
      - name: limit
        in: query
        description: Maximum number of icons returned per page.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 200
          default: 50
      - name: prev_page
        in: query
        description: Cursor token returned by a prior response for backward pagination.
        required: false
        schema:
          type: string
      - name: next_page
        in: query
        description: Cursor token returned by a prior response for forward pagination.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Paginated list of similar icons.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IconSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      security:
      - oauth1: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v2/icon/{icon_id}/download:
    get:
      operationId: downloadIcon
      summary: Download Icon
      description: Download a rendered icon in SVG or PNG format with optional hex-color recoloring and pixel sizing (PNG only). The response body is the icon binary; the content-type matches the requested filetype.
      tags:
      - Icon
      parameters:
      - $ref: '#/components/parameters/IconId'
      - name: color
        in: query
        description: Hexadecimal color value (without leading `#`) used to recolor the icon. Defaults to the icon's original color.
        required: false
        schema:
          type: string
          pattern: ^[0-9a-fA-F]{6}$
        example: ff5733
      - name: filetype
        in: query
        description: Output file format.
        required: false
        schema:
          type: string
          enum:
          - svg
          - png
          default: svg
        example: png
      - name: size
        in: query
        description: PNG pixel dimension (20-1200). Ignored for SVG downloads which scale infinitely.
        required: false
        schema:
          type: integer
          minimum: 20
          maximum: 1200
          default: 200
        example: 512
      responses:
        '200':
          description: Rendered icon binary.
          content:
            image/svg+xml:
              schema:
                type: string
                format: binary
            image/png:
              schema:
                type: string
                format: binary
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      security:
      - oauth1: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    IconResponse:
      type: object
      description: Single icon response wrapper.
      properties:
        icon:
          $ref: '#/components/schemas/Icon'
        generated_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when the response was generated.
          example: '2026-05-28T14:00:00Z'
      required:
      - icon
    Tag:
      type: object
      description: A single search tag applied to an icon or collection.
      properties:
        id:
          type: integer
          description: Numeric identifier of the tag.
          example: 999
        slug:
          type: string
          description: URL-safe slug of the tag.
          example: spaceship
      required:
      - id
      - slug
    IconCreator:
      type: object
      description: The creator of an icon.
      properties:
        id:
          type: integer
          description: Numeric identifier of the creator.
          example: 4321
        username:
          type: string
          description: URL-safe username of the creator.
          example: jsmith
        name:
          type: string
          description: Display name of the creator.
          example: Jane Smith
        permalink:
          type: string
          format: uri
          description: Canonical URL for the creator profile.
          example: https://thenounproject.com/jsmith/
        location:
          type: string
          description: Free-text location reported by the creator.
          example: Brooklyn, NY
        bio:
          type: string
          description: Creator's profile bio.
          example: Designer focused on space exploration icons.
        avatar_url:
          type: string
          format: uri
          description: URL to the creator's avatar image.
          example: https://static.thenounproject.com/avatars/4321.png
      required:
      - id
      - username
    ErrorResponse:
      type: object
      description: Standard error response payload returned for 4xx and 5xx responses.
      properties:
        error:
          type: string
          description: Machine-readable error code.
          example: rate_limit_exceeded
        message:
          type: string
          description: Human-readable error message.
          example: The monthly quota for this client key has been exceeded.
        status:
          type: integer
          description: HTTP status code echo.
          example: 429
        request_id:
          type: string
          description: Server-generated identifier for the failing request.
          example: req-abc123def456
    IconSearchResponse:
      type: object
      description: Paginated icon search results.
      properties:
        icons:
          type: array
          description: Icons matching the search criteria.
          items:
            $ref: '#/components/schemas/Icon'
        generated_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when the response was generated.
          example: '2026-05-28T14:00:00Z'
        total:
          type: integer
          description: Total number of icons matching the search.
          example: 4321
        next_page:
          type: string
          nullable: true
          description: Cursor token for the next page of results.
          example: eyJsYXN0X2lkIjoxMjM0NTY3fQ==
        prev_page:
          type: string
          nullable: true
          description: Cursor token for the previous page of results.
          example: null
      required:
      - icons
    Icon:
      type: object
      description: A single icon in the Noun Project library.
      properties:
        id:
          type: integer
          description: Numeric identifier of the icon.
          example: 1234567
        attribution:
          type: string
          description: Required attribution string when the icon is not public domain.
          example: rocket by Jane Smith from Noun Project
        attribution_preview_url:
          type: string
          format: uri
          description: URL to a rendered attribution image suitable for design overlays.
          example: https://static.thenounproject.com/png/1234567-attribution.png
        creator:
          $ref: '#/components/schemas/IconCreator'
        date_uploaded:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the icon was uploaded.
          example: '2024-08-15T13:45:00Z'
        is_active:
          type: boolean
          description: Whether the icon is currently active and available for download.
          example: true
        is_public_domain:
          type: boolean
          description: Whether the icon has been released into the public domain.
          example: false
        license_description:
          type: string
          description: Human-readable license summary.
          example: creative-commons-attribution
        permalink:
          type: string
          format: uri
          description: Canonical URL for the icon on thenounproject.com.
          example: https://thenounproject.com/icon/1234567/
        preview_url:
          type: string
          format: uri
          description: URL for the default-size preview image.
          example: https://static.thenounproject.com/png/1234567-200.png
        preview_url_42:
          type: string
          format: uri
          description: URL for the 42-pixel thumbnail.
          example: https://static.thenounproject.com/png/1234567-42.png
        preview_url_84:
          type: string
          format: uri
          description: URL for the 84-pixel thumbnail.
          example: https://static.thenounproject.com/png/1234567-84.png
        preview_url_200:
          type: string
          format: uri
          description: URL for the 200-pixel thumbnail.
          example: https://static.thenounproject.com/png/1234567-200.png
        icon_url:
          type: string
          format: uri
          description: Direct URL to the SVG asset (when include_svg is not used).
          example: https://static.thenounproject.com/svg/1234567.svg
        svg:
          type: string
          description: Inline SVG markup when include_svg=true was requested.
          example: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="..."/></svg>
        style:
          type: string
          description: Visual style classification of the icon.
          enum:
          - solid
          - line
          example: solid
        line_weight:
          type: integer
          description: Line weight in pixels at 512px rendering (line-style icons only).
          minimum: 1
          maximum: 60
          example: 4
        tags:
          type: array
          description: Search tags applied to the icon.
          items:
            $ref: '#/components/schemas/Tag'
        term:
          type: string
          description: Primary search term used to discover the icon.
          example: rocket
        term_slug:
          type: string
          description: URL-safe version of the term.
          example: rocket
        year_published:
          type: integer
          description: Year the icon was first published.
          example: 2024
        royalty_free_license:
          type: boolean
          description: Whether the icon is included under the royalty-free license.
          example: true
        nsfw:
          type: boolean
          description: Whether the icon has been flagged not-safe-for-work.
          example: false
        sponsor_id:
          type: integer
          nullable: true
          description: Identifier of the sponsoring brand if any.
          example: null
        thumbnail_url:
          type: string
          format: uri
          description: Thumbnail URL at the requested thumbnail_size.
          example: https://static.thenounproject.com/png/1234567-200.png
      required:
      - id
      - permalink
  responses:
    Unauthorized:
      description: Missing or invalid OAuth 1.0a credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The requested icon, collection, or resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    RateLimited:
      description: The hourly, daily, or monthly request quota has been exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  parameters:
    IconId:
      name: icon_id
      in: path
      description: Numeric identifier of the icon.
      required: true
      schema:
        type: integer
        minimum: 1
      example: 1234567
  securitySchemes:
    oauth1:
      type: apiKey
      in: header
      name: Authorization
      description: OAuth 1.0a signed Authorization header constructed with the client key and secret obtained from the Noun Project developer portal. A nonce of at least 8 characters is required. Use any standards-compliant OAuth 1.0a library (requests_oauthlib, Faraday-OAuth, DotNetOpenAuth, etc.).
      x-auth-type: OAuth 1.0a
      x-token-url: https://thenounproject.com/developers/apps/
externalDocs:
  description: Noun Project API Documentation
  url: https://api.thenounproject.com/documentation.html