Noun Project Collection API
Search and retrieve curated icon collections (icon sets).
Search and retrieve curated icon collections (icon sets).
openapi: 3.0.3
info:
title: Noun Project API V2 Autocomplete Collection 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: Collection
description: Search and retrieve curated icon collections (icon sets).
paths:
/v2/collection:
get:
operationId: searchCollections
summary: Search Collections
description: Search curated icon collections (icon sets) by query term. Returns a paginated list of matching collections with metadata.
tags:
- Collection
parameters:
- name: query
in: query
description: Search term used to match collection titles, tags, and descriptions.
required: true
schema:
type: string
example: weather
- name: blacklist
in: query
description: When true, applies the client's configured blocklist to results.
required: false
schema:
type: boolean
default: false
- name: limit
in: query
description: Maximum number of collections 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 collection search results.
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionSearchResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
security:
- oauth1: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v2/collection/{collection_id}:
get:
operationId: getCollection
summary: Get Collection
description: Retrieve a single icon collection with full metadata and member icons.
tags:
- Collection
parameters:
- $ref: '#/components/parameters/CollectionId'
- name: blacklist
in: query
description: When true, returns 404 if the collection is on the client's blocklist.
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: include_svg
in: query
description: When true, includes raw SVG markup in each member icon.
required: false
schema:
type: boolean
default: false
- name: limit
in: query
description: Maximum number of member 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: Collection details and member icons.
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionResponse'
'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:
Collection:
type: object
description: A curated icon collection (icon set).
properties:
id:
type: integer
description: Numeric identifier of the collection.
example: 98765
slug:
type: string
description: URL-safe slug of the collection.
example: weather-icons
name:
type: string
description: Display name of the collection.
example: Weather Icons
description:
type: string
description: Marketing description of the collection.
example: A complete weather iconography set covering conditions and forecasts.
permalink:
type: string
format: uri
description: Canonical URL for the collection on thenounproject.com.
example: https://thenounproject.com/collection/98765/
preview_url:
type: string
format: uri
description: Cover image URL for the collection.
example: https://static.thenounproject.com/collections/98765-cover.png
creator:
$ref: '#/components/schemas/IconCreator'
date_created:
type: string
format: date-time
description: ISO 8601 timestamp when the collection was created.
example: '2024-04-12T10:00:00Z'
date_updated:
type: string
format: date-time
description: ISO 8601 timestamp of the last collection update.
example: '2024-09-30T18:22:00Z'
is_published:
type: boolean
description: Whether the collection is published and discoverable.
example: true
icon_count:
type: integer
description: Number of icons currently in the collection.
example: 32
tags:
type: array
description: Search tags applied to the collection.
items:
$ref: '#/components/schemas/Tag'
icons:
type: array
description: Member icons returned when retrieving a collection by ID.
items:
$ref: '#/components/schemas/Icon'
required:
- id
- name
- permalink
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
CollectionSearchResponse:
type: object
description: Paginated collection search results.
properties:
collections:
type: array
description: Collections matching the search criteria.
items:
$ref: '#/components/schemas/Collection'
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 collections matching the search.
example: 187
next_page:
type: string
nullable: true
description: Cursor token for the next page of results.
example: eyJsYXN0X2lkIjo5ODc2NX0=
prev_page:
type: string
nullable: true
description: Cursor token for the previous page of results.
example: null
required:
- collections
CollectionResponse:
type: object
description: Single collection response wrapper.
properties:
collection:
$ref: '#/components/schemas/Collection'
generated_at:
type: string
format: date-time
description: ISO 8601 timestamp of when the response was generated.
example: '2026-05-28T14:00:00Z'
required:
- collection
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:
CollectionId:
name: collection_id
in: path
description: Numeric identifier of the collection.
required: true
schema:
type: integer
minimum: 1
example: 98765
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