Noun Project Blocklist API

Manage per-client blocklists for icon IDs, collection IDs, and terms.

OpenAPI Specification

noun-project-blocklist-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Noun Project API V2 Autocomplete Blocklist 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: Blocklist
  description: Manage per-client blocklists for icon IDs, collection IDs, and terms.
paths:
  /v2/client/blacklist:
    get:
      operationId: getBlocklist
      summary: Get Client Blocklist
      description: Return the current blocklist for the calling client key, including blocked icon IDs, collection IDs, terms, and phrases. Results are cached for 10 minutes.
      tags:
      - Blocklist
      responses:
        '200':
          description: Current blocklist contents.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlocklistResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
      - oauth1: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v2/client/blacklist/id:
    post:
      operationId: addBlocklistIds
      summary: Add Blocklist IDs
      description: Add icon IDs or collection IDs to the client blocklist. Maximum 1,000 IDs per request for paid tiers and 5 for free trial accounts.
      tags:
      - Blocklist
      parameters:
      - name: type
        in: query
        description: Type of identifier being blocked.
        required: false
        schema:
          type: string
          enum:
          - icon
          - collection
          default: icon
      requestBody:
        description: Blocklist identifiers to add or overwrite.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlocklistIdRequest'
      responses:
        '200':
          description: Updated blocklist contents.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlocklistResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      security:
      - oauth1: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v2/client/blacklist/term:
    post:
      operationId: addBlocklistTerms
      summary: Add Blocklist Terms
      description: Add terms and phrases to the client blocklist. Maximum 1,000 terms per request for paid tiers and 5 for free trial accounts.
      tags:
      - Blocklist
      requestBody:
        description: Blocklist terms and phrases to add or overwrite.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlocklistTermRequest'
      responses:
        '200':
          description: Updated blocklist contents.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlocklistResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      security:
      - oauth1: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    Blocklist:
      type: object
      description: The current blocklist for a client key.
      properties:
        icon_ids:
          type: array
          description: Blocked icon identifiers.
          items:
            type: integer
          example:
          - 12345
          - 67890
        collection_ids:
          type: array
          description: Blocked collection identifiers.
          items:
            type: integer
          example:
          - 98765
        terms:
          type: array
          description: Blocked terms and phrases.
          items:
            type: string
          example:
          - violence
          - weapon
        cached_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the blocklist was last cached.
          example: '2026-05-28T13:55:00Z'
    BlocklistTermRequest:
      type: object
      description: Request body for adding terms or phrases to the blocklist.
      properties:
        blacklist:
          type: array
          description: Terms and phrases to add to the blocklist.
          items:
            type: string
          minItems: 1
          maxItems: 1000
          example:
          - violence
          - weapon
        overwrite:
          type: boolean
          description: When true, replaces the existing term blocklist entirely.
          default: false
          example: false
      required:
      - blacklist
    BlocklistResponse:
      type: object
      description: Wrapper for the client blocklist response.
      properties:
        blacklist:
          $ref: '#/components/schemas/Blocklist'
        generated_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when the response was generated.
          example: '2026-05-28T14:00:00Z'
      required:
      - blacklist
    BlocklistIdRequest:
      type: object
      description: Request body for adding icon or collection IDs to the blocklist.
      properties:
        blacklist:
          type: array
          description: Identifiers to add to the blocklist.
          items:
            type: integer
          minItems: 1
          maxItems: 1000
          example:
          - 12345
          - 67890
        overwrite:
          type: boolean
          description: When true, replaces the existing blocklist for this type entirely.
          default: false
          example: false
      required:
      - blacklist
    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
  responses:
    Unauthorized:
      description: Missing or invalid OAuth 1.0a credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: The request was malformed or violated a documented limit.
      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'
  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