Xquik Account API

Account info and settings

Operations 3

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /api/v1/account View my account info · Get account info #
Ask an LLM
“Can I pull up my own account info through the API?”
“What does my account record currently show?”
Tell an agent
Show my account info.
Fetch the details of the account this API key belongs to.
PATCH /api/v1/account Change my account locale · Update account locale #
Ask an LLM
“Can I change the language locale on my account?”
“How do I switch my account's locale to another language?”
Tell an agent
Set my account locale to {locale}.
Change my account language to {locale}.
PUT /api/v1/account/x-identity Link an X username to my account · Set linked X username #
Ask an LLM
“Can I link my X username to my account?”
“What X handle is tied to my account, and can I change it?”
Tell an agent
Link X username {username} to my account.
Set my linked X identity to @{username}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/xquik-api:xquik-api-account-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

xquik-api-account-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Xquik Account API
  version: '1.0'
  description: Xquik is an independent third-party service.
  x-guidance: '## Common tasks


    **Find a tweet** - GET /x/tweets/{id}. Returns text, author, metrics, media, and creation time. Cost: $0.00015 per lookup.


    **Search tweets** - GET /x/tweets/search?q={query}&limit={n}. Supports X operators, structured filters, Tweet IDs, and status URLs. Omit mode for automatic coverage. Cost: $0.00015 per returned tweet.


    **Find a user** - GET /x/users/{id}. Accepts an ID or username. Cost: $0.00015 per lookup.


    **Check if A follows B** - GET /x/followers/check?source={a}&target={b}. Accepts usernames or profile URLs. Cost: $0.00075.


    **Get trends** - GET /trends?woeid={region}&count={n}. WOEID 1 is worldwide. Cost: $0.00045.


    **Download media** - POST /x/media/download with `tweetIds`. Fresh Tweets cost 1 credit each. Cached repeats are free.


    **Read an article** - GET /x/articles/{tweetId}. Cost: $0.00075.


    ## Pagination


    Default platform pages return `hasMore` and `nextCursor`. X pages return `has_next_page` and `next_cursor`. The 2026-04-29 contract returns `has_more` and `next_cursor`. Pass cursors through `cursor`; `after` remains compatible. Dynamic pricing counts returned items, not requests.


    Omit `mode` for automatic reads. Pass cursors unchanged. `mode=standard` remains legacy. Retry 409 responses after `Retry-After`. Restart 410 responses without a cursor.


    ## Authentication


    Eligible reads accept guest wallets. Fixed-price lookups also accept MPP. Other features require an API key or OAuth 2.1 bearer token. API keys also support `Authorization: Bearer xq_...`.


    ## Best-Practice Response Contract


    v1 remains the default. Send `xquik-api-contract: 2026-04-29` for snake_case, Unix timestamps, structured errors, unified pagination, resource objects, and prefixed IDs. Dependency failures use 424 instead of 502.'
  contact:
    name: Xquik
    url: https://xquik.com
    email: support@xquik.com
servers:
- url: https://xquik.com
security:
- apiKey: []
- oauthBearer: []
tags:
- name: Account
  description: Account info and settings
paths:
  /api/v1/account:
    get:
      operationId: getAccount
      summary: Get account info
      tags:
      - Account
      security:
      - apiKey: []
      - oauthBearer: []
      responses:
        '200':
          description: Account info
          content:
            application/json:
              schema:
                type: object
                required:
                - plan
                - monitorsUsed
                - monitorsAllowed
                - monitorBilling
                properties:
                  plan:
                    type: string
                    enum:
                    - active
                    - inactive
                    example: active
                  monitorsUsed:
                    type: integer
                    example: 3
                  monitorsAllowed:
                    type: integer
                    deprecated: true
                    x-stainless-deprecation-message: Monitor slots are unlimited. Use monitorBilling.unlimitedSlots instead.
                    description: Deprecated. Monitor slots are unlimited, so this is always Number.MAX_SAFE_INTEGER.
                    example: 9007199254740991
                  monitorBilling:
                    type: object
                    required:
                    - activeDailyEstimate
                    - activeHourlyBurn
                    - creditsPerActiveMonitorDay
                    - creditsPerActiveMonitorHour
                    - eventsIncluded
                    - instantCheckIntervalSeconds
                    - unlimitedSlots
                    properties:
                      activeDailyEstimate:
                        type: string
                        description: Estimated daily credits for currently active monitors.
                        example: '1500'
                      activeHourlyBurn:
                        type: string
                        description: Credits charged each hour for currently active monitors.
                        example: '63'
                      creditsPerActiveMonitorDay:
                        type: string
                        description: Rounded daily estimate for 1 active monitor.
                        example: '500'
                      creditsPerActiveMonitorHour:
                        type: string
                        description: Hourly credits charged for 1 active monitor.
                        example: '21'
                      eventsIncluded:
                        type: boolean
                        description: Webhook and event deliveries are included in monitor billing.
                        example: true
                      instantCheckIntervalSeconds:
                        type: integer
                        description: Active monitors check every 1 second.
                        example: 1
                      unlimitedSlots:
                        type: boolean
                        description: Monitor slot count is unlimited.
                        example: true
                  creditInfo:
                    type: object
                    required:
                    - balance
                    - lifetimePurchased
                    - lifetimeUsed
                    - autoTopupEnabled
                    - autoTopupAmountDollars
                    - autoTopupThreshold
                    properties:
                      balance:
                        type: string
                        description: Bigint string to preserve precision above Number.MAX_SAFE_INTEGER.
                        example: '50000'
                      lifetimePurchased:
                        type: string
                        description: Total purchased credits as a bigint string.
                        example: '140000'
                      lifetimeUsed:
                        type: string
                        description: Total consumed credits as a bigint string.
                        example: '90000'
                      autoTopupEnabled:
                        type: boolean
                        example: false
                      autoTopupAmountDollars:
                        type: number
                        description: Dollar amount charged when automatic top-up runs.
                        example: 10
                      autoTopupThreshold:
                        type: string
                        description: Bigint string threshold that triggers automatic top-up when enabled.
                        example: '50000'
                    example:
                      balance: '50000'
                      lifetimePurchased: '140000'
                      lifetimeUsed: '90000'
                      autoTopupEnabled: false
                      autoTopupAmountDollars: 10
                      autoTopupThreshold: '50000'
                  xUsername:
                    type: string
                    description: Linked X username, omitted when no X account is connected.
                    example: elonmusk
              example:
                plan: active
                monitorsUsed: 3
                monitorsAllowed: 9007199254740991
                monitorBilling:
                  activeDailyEstimate: '1500'
                  activeHourlyBurn: '63'
                  creditsPerActiveMonitorDay: '500'
                  creditsPerActiveMonitorHour: '21'
                  eventsIncluded: true
                  instantCheckIntervalSeconds: 1
                  unlimitedSlots: true
                creditInfo:
                  balance: '50000'
                  lifetimePurchased: '140000'
                  lifetimeUsed: '90000'
                  autoTopupEnabled: false
                  autoTopupAmountDollars: 10
                  autoTopupThreshold: '50000'
                xUsername: elonmusk
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        default:
          $ref: '#/components/responses/UnexpectedError'
      description: Get account info.
    patch:
      operationId: updateAccount
      summary: Update account locale
      tags:
      - Account
      security:
      - apiKey: []
      - oauthBearer: []
      requestBody:
        required: true
        description: Locale preference for the account.
        content:
          application/json:
            schema:
              type: object
              required:
              - locale
              properties:
                locale:
                  type: string
                  enum:
                  - en
                  - tr
                  - es
                  example: en
            example:
              locale: en
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        default:
          $ref: '#/components/responses/UnexpectedError'
      description: Update account locale.
  /api/v1/account/x-identity:
    put:
      operationId: setXIdentity
      summary: Set linked X username
      tags:
      - Account
      security:
      - apiKey: []
      - oauthBearer: []
      requestBody:
        required: true
        description: X username to link to this account.
        content:
          application/json:
            schema:
              type: object
              required:
              - username
              properties:
                username:
                  type: string
                  description: X username without @
                  example: elonmusk
            example:
              username: elonmusk
      responses:
        '200':
          description: X identity linked
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - xUsername
                properties:
                  success:
                    type: boolean
                    const: true
                  xUsername:
                    type: string
                    example: elonmusk
              example:
                success: true
                xUsername: elonmusk
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        default:
          $ref: '#/components/responses/UnexpectedError'
      description: Set linked X username.
components:
  responses:
    Success:
      description: Success
      content:
        application/json:
          schema:
            type: object
            required:
            - success
            properties:
              success:
                type: boolean
                const: true
                example: true
          example:
            success: true
    InvalidInput:
      description: Invalid input
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: invalid_input
            message: Invalid input. Check the request body.
    Unauthenticated:
      description: Unauthenticated
      headers:
        Cache-Control:
          description: Prevents storage of authentication responses.
          schema:
            type: string
            const: no-store
        WWW-Authenticate:
          description: Bearer authentication challenge.
          schema:
            type: string
            const: Bearer realm="xquik"
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: unauthenticated
            message: Authentication required. Provide a valid API key or bearer token.
    UnexpectedError:
      content:
        application/json:
          example:
            error: internal_error
            message: Unexpected error. Try again.
          schema:
            $ref: '#/components/schemas/Error'
      description: Unexpected error.
    RateLimitExceeded:
      description: 'Xquik tier rate limit exceeded. The response includes a `Retry-After` header with the number of seconds to wait before retrying.

        '
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/Error'
            - type: object
              properties:
                retryAfter:
                  type: integer
                  example: 60
          example:
            error: rate_limit_exceeded
            message: Too many requests. Try again later.
            retryAfter: 60
      headers:
        Retry-After:
          description: Seconds until the next permitted request.
          schema:
            example: 60
            minimum: 1
            type: integer
  schemas:
    Error:
      description: 'Error response. Default v1 returns a legacy string error code. Send `xquik-api-contract: 2026-04-29` to receive the structured best-practice error object.

        '
      type: object
      required:
      - error
      properties:
        error:
          x-stainless-naming:
            python:
              type_name: ErrorValue
            java:
              type_name: ErrorValue
          oneOf:
          - type: string
            title: LegacyErrorCode
            enum:
            - internal_error
            - account_already_connected
            - account_needs_reauth
            - account_not_found
            - account_required
            - account_restricted
            - api_key_limit_reached
            - article_not_found
            - closed
            - dm_not_permitted
            - invalid_format
            - invalid_id
            - invalid_input
            - invalid_params
            - invalid_tool_type
            - invalid_tweet_id
            - invalid_tweet_url
            - invalid_user_id
            - invalid_user_ids
            - invalid_username
            - invalid_json
            - insufficient_credits
            - login_cooldown
            - login_failed
            - media_download_failed
            - missing_params
            - missing_query
            - monitor_already_exists
            - monitor_profile_unavailable
            - no_media
            - no_credits
            - no_subscription
            - not_found
            - payment_failed
            - rate_limit_exceeded
            - service_unavailable
            - style_not_found
            - subscription_inactive
            - tweet_not_found
            - unauthenticated
            - unsupported_field
            - user_not_found
            - body_too_large
            - checkout_unavailable
            - connection_challenge_expired
            - connection_challenge_inactive
            - coverage_cursor_gone
            - coverage_cursor_unavailable
            - draft_not_found
            - expired
            - favoriters_unavailable
            - forbidden
            - guest_wallet_unavailable
            - guest_wallets_disabled
            - guest_wallets_unavailable
            - idempotency_conflict
            - idempotency_key_conflict
            - invalid_community_id
            - invalid_complete_replies_request
            - invalid_coverage_cursor
            - invalid_coverage_request
            - invalid_idempotency_key
            - invalid_list_id
            - invalid_output_options
            - invalid_payment_amount
            - invalid_range
            - invalid_reply_options
            - login_rate_limited
            - login_service_unavailable
            - missing_idempotency_key
            - missing_ids
            - missing_url
            - no_cached_style
            - passkey_required
            - rate_limited
            - read_request_timeout
            - replies_incomplete
            - support_media_rate_limit
            - support_request_rate_limit
            - too_many_ids
            - too_many_tweets
            - unknown_field
            - unsupported_media_type
            - webhook_inactive
            - write_tracking_unavailable
            - x_write_unconfirmed
            - x_account_feature_required
            - x_account_protected
            - x_account_suspended
            - x_api_rate_limited
            - x_api_unavailable
            - x_api_unauthorized
            - x_auth_failure
            - x_content_too_long
            - x_daily_limit
            - x_dm_not_allowed
            - x_duplicate_action
            - x_login_auth_failed
            - x_login_challenge
            - x_login_denied
            - x_login_failed
            - x_login_proxy_error
            - x_login_rate_limited
            - x_login_service_unavailable
            - x_login_suspended
            - x_rate_limited
            - x_rejected
            - x_target_not_found
            - x_transient_error
            - x_user_lookup_failed
            - x_write_ambiguous
            - x_write_failed
          - type: object
            title: StructuredError
            required:
            - message
            - type
            - code
            properties:
              message:
                type: string
              type:
                type: string
                enum:
                - api_error
                - authentication_error
                - billing_error
                - dependency_error
                - invalid_request_error
                - permission_error
                - rate_limit_error
              code:
                type: string
                title: ErrorCode
                enum:
                - internal_error
                - account_already_connected
                - account_needs_reauth
                - account_not_found
                - account_required
                - account_restricted
                - api_key_limit_reached
                - article_not_found
                - closed
                - dm_not_permitted
                - invalid_format
                - invalid_id
                - invalid_input
                - invalid_params
                - invalid_tool_type
                - invalid_tweet_id
                - invalid_tweet_url
                - invalid_user_id
                - invalid_user_ids
                - invalid_username
                - invalid_json
                - insufficient_credits
                - login_cooldown
                - login_failed
                - media_download_failed
                - missing_params
                - missing_query
                - monitor_already_exists
                - monitor_profile_unavailable
                - no_media
                - no_credits
                - no_subscription
                - not_found
                - payment_failed
                - rate_limit_exceeded
                - service_unavailable
                - style_not_found
                - subscription_inactive
                - tweet_not_found
                - unauthenticated
                - unsupported_field
                - user_not_found
                - body_too_large
                - checkout_unavailable
                - connection_challenge_expired
                - connection_challenge_inactive
                - coverage_cursor_gone
                - coverage_cursor_unavailable
                - draft_not_found
                - expired
                - favoriters_unavailable
                - forbidden
                - guest_wallet_unavailable
                - guest_wallets_disabled
                - guest_wallets_unavailable
                - idempotency_conflict
                - idempotency_key_conflict
                - invalid_community_id
                - invalid_complete_replies_request
                - invalid_coverage_cursor
                - invalid_coverage_request
                - invalid_idempotency_key
                - invalid_list_id
                - invalid_output_options
                - invalid_payment_amount
                - invalid_range
                - invalid_reply_options
                - login_rate_limited
                - login_service_unavailable
                - missing_idempotency_key
                - missing_ids
                - missing_url
                - no_cached_style
                - passkey_required
                - rate_limited
                - read_request_timeout
                - replies_incomplete
                - support_media_rate_limit
                - support_request_rate_limit
                - too_many_ids
                - too_many_tweets
                - unknown_field
                - unsupported_media_type
                - webhook_inactive
                - write_tracking_unavailable
                - x_write_unconfirmed
                - x_account_feature_required
                - x_account_protected
                - x_account_suspended
                - x_api_rate_limited
                - x_api_unavailable
                - x_api_unauthorized
                - x_auth_failure
                - x_content_too_long
                - x_daily_limit
                - x_dm_not_allowed
                - x_duplicate_action
                - x_login_auth_failed
                - x_login_challenge
                - x_login_denied
                - x_login_failed
                - x_login_proxy_error
                - x_login_rate_limited
                - x_login_service_unavailable
                - x_login_suspended
                - x_rate_limited
                - x_rejected
                - x_target_not_found
                - x_transient_error
                - x_user_lookup_failed
                - x_write_ambiguous
                - x_write_failed
        message:
          type: string
          description: Human-readable error guidance.
        reason:
          type: string
          description: Machine-readable reason for a login cooldown.
        retryAfter:
          type: integer
          minimum: 1
          description: Seconds until the next permitted request.
        retryAfterMs:
          type: integer
          minimum: 1
          description: Required wait in milliseconds.
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: 'Xquik API key passed through the x-api-key header. Xquik-Api-Key is a vendor-prefixed alias. API keys beginning with xq_ can also use Authorization: Bearer.'
    oauthBearer:
      type: http
      scheme: bearer
      description: 'OAuth 2.1 access token passed through Authorization: Bearer. Values beginning with xq_ remain Xquik API-key credentials, not OAuth tokens.'
    cookieSession:
      type: apiKey
      in: cookie
      name: __Host-xquik_session
      description: Secure Xquik browser session cookie.
x-service-info:
  categories:
  - data
  docs:
    homepage: https://xquik.com
    apiReference: https://docs.xquik.com
    llms: https://docs.xquik.com/llms.txt
x-discovery:
  ownershipProofs:
  - dns:xquik.com