> ## Documentation Index
> Fetch the complete documentation index at: https://docs.asobeast.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Preview a keyword import without writing

> Validates up to 500 rows and answers, for every row, whether an import would track it, resume it, skip it or refuse it, with the daily store requests the import would add and the keyword limit of the plan. Writes nothing and queues nothing. Rows without a country use the request country, which is a lower case storefront code, else the home market of the app. imported is always 0 and quota.used counts the keyword markets in use now.



## OpenAPI

````yaml /api-reference/openapi.json post /apps/{id}/keywords/import/preview
openapi: 3.0.0
info:
  title: asobeast API
  description: >-
    Self hosted ASO toolkit API.


    A metered instance carries RateLimit-Limit, RateLimit-Remaining and
    RateLimit-Reset on every response, for the tightest limit the request
    touched. A self hosted instance has no request rate limits and sends no such
    header. Limits are per workspace, so minting more tokens does not buy more
    capacity, and they are sized per plan across three classes: read for stored
    data, write for configuration changes and store for the endpoints that reach
    the App Store or Google Play.


    A 429 carries Retry-After and a rateLimit object naming the window that
    closed, or an aiAllowance object when the workspace has spent the AI calls
    its plan includes this month. A 403 with a quota object means a plan
    capacity limit such as apps or tracked keyword markets, which is a different
    problem from a rate limit. A 402 with an entitlement object means the
    workspace needs a plan.


    Positions are 1-based and null means checked but not found within the
    captured depth, never zero. Daily granularity uses UTC dates.
  version: 1.8.0
  contact: {}
servers:
  - url: http://localhost:3000/api/backend
    description: Web origin proxy
  - url: http://localhost:4000
    description: Direct API
security:
  - personalApiToken: []
tags: []
paths:
  /apps/{id}/keywords/import/preview:
    post:
      tags:
        - keywords
      summary: Preview a keyword import without writing
      description: >-
        Validates up to 500 rows and answers, for every row, whether an import
        would track it, resume it, skip it or refuse it, with the daily store
        requests the import would add and the keyword limit of the plan. Writes
        nothing and queues nothing. Rows without a country use the request
        country, which is a lower case storefront code, else the home market of
        the app. imported is always 0 and quota.used counts the keyword markets
        in use now.
      operationId: KeywordsController_previewImport
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KeywordImportDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
components:
  schemas:
    KeywordImportDto:
      type: object
      properties:
        rows:
          minItems: 1
          maxItems: 500
          type: array
          items:
            $ref: '#/components/schemas/KeywordImportRowDto'
        country:
          type: string
          example: us
          pattern: ^[a-z]{2}$
      required:
        - rows
    KeywordImportRowDto:
      type: object
      properties:
        keyword:
          type: string
          example: habit tracker
        country:
          type: string
          nullable: true
          example: pl
        tags:
          example:
            - core
            - brand
          type: array
          items:
            type: string
        note:
          type: string
          nullable: true
          example: Q4 push
      required:
        - keyword
  securitySchemes:
    personalApiToken:
      scheme: bearer
      bearerFormat: asob
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.