Xquik Guest Wallets API

Accountless prepaid access for paid read endpoints

Operations 3

POST /api/v1/guest-wallets Create an accountless prepaid wallet checkout #
POST /api/v1/guest-wallets/topups Create another guest wallet checkout #
GET /api/v1/guest-wallets/status Get guest wallet and payment status #

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-guest-wallets-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 email required.

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

OpenAPI Specification

xquik-api-guest-wallets-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Xquik Guest Wallets API
  version: '1.0'
  description: "Xquik is an independent third-party service. Not affiliated with X Corp. \"Twitter\" and \"X\" are trademarks of X Corp. Look up tweets, users, and X trends. Search tweets, check follow relationships, download media, and monitor accounts. 33 paid-read endpoints accept prepaid credits without a subscription. 7 fixed-price lookups also accept direct MPP payments. Write and automation endpoints require an API key or OAuth 2.1 bearer token.\n\n## Xquik SDKs\n\nStainless generates each SDK from this OpenAPI schema. Pick a language:\n\n- TypeScript / Node.js: `npm i x-twitter-scraper` -\n  [Xquik-dev/x-twitter-scraper-typescript](https://github.com/Xquik-dev/x-twitter-scraper-typescript)\n\n- Python: `pip install x-twitter-scraper` -\n  [Xquik-dev/x-twitter-scraper-python](https://github.com/Xquik-dev/x-twitter-scraper-python)\n\n- Go: `go get github.com/Xquik-dev/x-twitter-scraper-go` -\n  [Xquik-dev/x-twitter-scraper-go](https://github.com/Xquik-dev/x-twitter-scraper-go)\n\n- Ruby: `gem install x-twitter-scraper` -\n  [Xquik-dev/x-twitter-scraper-ruby](https://github.com/Xquik-dev/x-twitter-scraper-ruby)\n\n- Java (source build; Maven Central pending) -\n  [Xquik-dev/x-twitter-scraper-java](https://github.com/Xquik-dev/x-twitter-scraper-java)\n\n- Kotlin (source build; Maven Central pending) -\n  [Xquik-dev/x-twitter-scraper-kotlin](https://github.com/Xquik-dev/x-twitter-scraper-kotlin)\n\n- C# / .NET: `dotnet add package XTwitterScraper` -\n  [Xquik-dev/x-twitter-scraper-csharp](https://github.com/Xquik-dev/x-twitter-scraper-csharp)\n\n- PHP: `composer require xquik/x-twitter-scraper` -\n  [Xquik-dev/x-twitter-scraper-php](https://github.com/Xquik-dev/x-twitter-scraper-php)\n\n- CLI: `go install github.com/Xquik-dev/x-twitter-scraper-cli/cmd/x-twitter-scraper@latest` -\n  [Xquik-dev/x-twitter-scraper-cli](https://github.com/Xquik-dev/x-twitter-scraper-cli)\n\n- Terraform Provider (Terraform Registry) -\n  [Xquik-dev/terraform-provider-x-twitter-scraper](https://github.com/Xquik-dev/terraform-provider-x-twitter-scraper)\n\n\nOpenClaw plugin: [Xquik-dev/tweetclaw](https://github.com/Xquik-dev/tweetclaw) (`openclaw plugins install clawhub:@xquik/tweetclaw`)."
  x-guidance: '## Common tasks


    **Find a tweet** - GET /x/tweets/{id} with a numeric tweet ID. Returns full tweet data: text, author, metrics (likes, retweets, replies, views), media URLs, and creation timestamp. Cost: $0.00015 per lookup.


    **Search tweets** - GET /x/tweets/search?q={query}&limit={n}. Supports X search operators, structured filters like fromUser, mediaType, minFaves, hashtags, and verifiedOnly, plus exact lookup for a pasted Tweet ID or X status URL. Plain from:user date windows are optimized for timeline completeness. Returns up to 200 tweets per page with cursor-based pagination. Cost: $0.00015 per tweet returned.


    **Find a user** - GET /x/users/{id} where {id} is a numeric user ID or @username. Returns profile data: name, bio, follower/following counts, verification status, join date. Cost: $0.00015 per lookup.


    **Check if A follows B** - GET /x/followers/check?source={a}&target={b} where source and target are usernames, @usernames, or X or Twitter profile URLs. Cost: $0.00075.


    **Get trending topics** - GET /trends?woeid={region}&count={n}. WOEID 1 = worldwide, 23424977 = US, 23424975 = UK, 23424969 = Turkey. Cost: $0.00045.


    **Download media** - POST /x/media/download with {"tweetIds": ["123", "456"]} body. Returns download URLs for images and videos. Cost: 1 credit per fresh tweet processed with media; cached repeat downloads are free.


    **Read an article** - GET /x/articles/{tweetId} for long-form X Articles. Returns full article HTML, cover image, and metadata. Cost: $0.00075.


    ## Pagination


    Default v1 responses keep their existing pagination fields for compatibility. Platform list endpoints return `hasMore` and `nextCursor`; X data endpoints return `has_next_page` and `next_cursor`. Send `xquik-api-contract: 2026-04-29` to receive the unified best-practice fields `has_more` and `next_cursor`. Pass the cursor back as `?cursor={cursor}`; legacy `?after={cursor}` still works. Dynamic-priced endpoints charge per item returned, not per request.


    ## Authentication


    Eligible paid read endpoints accept accountless prepaid credit wallets. Fixed-price lookups also accept direct MPP payments. Media downloads, write endpoints, and automation features require authentication. Send an Xquik API key through `x-api-key`, `Xquik-Api-Key`, or `Authorization: Bearer xq_...`. Send an OAuth 2.1 access token through `Authorization: Bearer`.


    ## Best-Practice Response Contract


    v1 keeps its original response contract by default so existing integrations do not break. Send `xquik-api-contract: 2026-04-29` to opt in to the best-practice contract: snake_case response fields, Unix timestamps in seconds, structured error objects, `has_more` and `next_cursor` pagination fields, `object` resource identifiers, and prefixed IDs where available. Dependency failures that returned 502 in default v1 return 424 in the opt-in contract. Future major API versions should make this contract the default.'
  contact:
    name: Xquik
    url: https://xquik.com
    email: support@xquik.com
servers:
- url: https://xquik.com
security:
- apiKey: []
- oauthBearer: []
tags:
- name: Guest Wallets
  description: Accountless prepaid access for paid read endpoints
paths:
  /api/v1/guest-wallets:
    post:
      operationId: createGuestWallet
      summary: Create an accountless prepaid wallet checkout
      description: 'Create a one-use Stripe-hosted checkout after the user explicitly confirms a $10-$250 USD amount. This request creates no charge by itself. The user opens checkout_url on Stripe. This endpoint returns the paid-read API key without requiring an Xquik account, email, dashboard, or Xquik web page. An idempotent replay returns the same key.

        '
      tags:
      - Guest Wallets
      security: []
      parameters:
      - $ref: '#/components/parameters/GuestIdempotencyKey'
      requestBody:
        required: true
        description: Confirmed USD amount in cents.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GuestWalletPurchaseRequest'
            example:
              amount_minor: 1000
              currency: usd
      responses:
        '201':
          description: 'Stripe-hosted checkout, guest API key, and API status URL.

            '
          headers:
            Cache-Control:
              description: Prevents storage of the secret-bearing response.
              schema:
                type: string
                const: no-store, private
            Idempotent-Replayed:
              description: Set to true when this wallet creation replays.
              schema:
                type: string
                const: 'true'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GuestWalletCreateResponse'
              example:
                account_required: false
                amount:
                  amount_minor: 1000
                  currency: usd
                api_key: xq_example_returned_once
                authorization:
                  header: Authorization
                  scheme: Bearer
                checkout_url: https://buy.stripe.com/example
                credential_notice: Store api_key and the Idempotency-Key securely before sharing checkout_url. No email recovery is available.
                credits: '66666'
                expires_at: '2026-07-13T13:00:00.000Z'
                instructions: Give checkout_url to the user. They must complete payment on Stripe. Never submit payment for them. After payment, poll status_url every poll_after_seconds until latest_purchase.status is no longer pending.
                poll_after_seconds: 2
                purchase_id: gp_example
                requires_user_interaction: true
                status: pending
                status_url: https://xquik.com/api/v1/guest-wallets/status
                wallet_id: gw_example
        '400':
          $ref: '#/components/responses/InvalidInput'
        '409':
          description: Idempotency-Key was reused with a different request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: idempotency_conflict
                message: Reuse this Idempotency-Key only with the original request.
        '410':
          description: Checkout expired or can no longer be used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: checkout_unavailable
                message: Checkout unavailable. Retry with a new Idempotency-Key.
        '413':
          description: Request body is too large.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: body_too_large
                message: Request body is too large.
        '415':
          description: Content-Type must be application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: unsupported_media_type
                message: 'Send Content-Type: application/json.'
        '423':
          description: Guest wallet is unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: guest_wallet_unavailable
                message: Guest wallet unavailable. Create a new wallet or contact support.
        '429':
          $ref: '#/components/responses/GuestWalletRateLimited'
        '503':
          description: Guest wallet checkout is unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: guest_wallets_unavailable
                message: Guest wallet checkout is temporarily unavailable.
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
  /api/v1/guest-wallets/topups:
    post:
      operationId: topUpGuestWallet
      summary: Create another guest wallet checkout
      description: 'Create a one-use Stripe-hosted checkout for an existing paid-read guest key after the user explicitly confirms a $10-$250 USD amount. The key remains the same. This request creates no charge by itself and never redirects through an Xquik web page.

        '
      tags:
      - Guest Wallets
      security:
      - apiKey: []
      parameters:
      - $ref: '#/components/parameters/GuestIdempotencyKey'
      requestBody:
        required: true
        description: Confirmed top-up amount in USD cents.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GuestWalletPurchaseRequest'
            example:
              amount_minor: 1000
              currency: usd
      responses:
        '201':
          description: Stripe-hosted checkout and API status URL.
          headers:
            Cache-Control:
              description: Prevents caching the top-up checkout response.
              schema:
                type: string
                const: no-store, private
            Idempotent-Replayed:
              description: Set to true when this top-up replays.
              schema:
                type: string
                const: 'true'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GuestWalletTopupResponse'
              example:
                account_required: false
                amount:
                  amount_minor: 1000
                  currency: usd
                checkout_url: https://buy.stripe.com/example
                credits: '66666'
                expires_at: '2026-07-13T13:00:00.000Z'
                instructions: Give checkout_url to the user. They must complete payment on Stripe. Never submit payment for them. After payment, poll status_url every poll_after_seconds until latest_purchase.status is no longer pending.
                poll_after_seconds: 2
                purchase_id: gp_example
                requires_user_interaction: true
                status: pending
                status_url: https://xquik.com/api/v1/guest-wallets/status
                wallet_id: gw_example
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '409':
          description: Top-up key was reused with a different request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: idempotency_conflict
                message: Reuse this Idempotency-Key only with the original request.
        '410':
          description: Top-up checkout expired or became unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: checkout_unavailable
                message: Checkout unavailable. Retry with a new Idempotency-Key.
        '413':
          description: Top-up request body is too large.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: body_too_large
                message: Request body is too large.
        '415':
          description: Top-up requires Content-Type application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: unsupported_media_type
                message: 'Send Content-Type: application/json.'
        '423':
          description: Guest wallet cannot accept a top-up.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: guest_wallet_unavailable
                message: Guest wallet unavailable. Create a new wallet or contact support.
        '429':
          $ref: '#/components/responses/GuestWalletRateLimited'
        '503':
          description: Guest wallet top-up checkout is unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: guest_wallets_unavailable
                message: Guest wallet checkout is temporarily unavailable.
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
  /api/v1/guest-wallets/status:
    get:
      operationId: getGuestWalletStatus
      summary: Get guest wallet and payment status
      description: 'Poll after Stripe payment. Use usable to decide whether paid reads can run. An active wallet can remain usable while a top-up is pending. A new wallet becomes usable only after verified webhook fulfillment. Send the guest key as Authorization: Bearer.

        '
      tags:
      - Guest Wallets
      security:
      - apiKey: []
      responses:
        '200':
          description: Guest wallet status without exposing the API key.
          headers:
            Cache-Control:
              description: Prevents storage of wallet status.
              schema:
                type: string
                const: no-store, private
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GuestWalletStatusResponse'
              example:
                balance: '66666'
                latest_purchase:
                  amount:
                    amount_minor: 1000
                    currency: usd
                  checkout_url: null
                  credits: '66666'
                  expires_at: '2026-07-13T13:00:00.000Z'
                  purchase_id: gp_example
                  status: paid
                poll_after_seconds: null
                scope: paid_reads
                status: active
                top_up:
                  method: POST
                  path: /api/v1/guest-wallets/topups
                usable: true
                wallet_id: gw_example
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '429':
          $ref: '#/components/responses/GuestWalletRateLimited'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
components:
  responses:
    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.
    GuestWalletRateLimited:
      description: Guest wallet request limit exceeded.
      headers:
        Retry-After:
          description: Seconds before the next guest wallet request.
          required: true
          schema:
            type: integer
            minimum: 1
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: rate_limited
            message: Try again later.
    InvalidInput:
      description: Invalid input
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: invalid_input
            message: Invalid input. Check the request body.
  schemas:
    GuestWalletCheckoutResponse:
      description: Pending Stripe checkout and guest wallet purchase details.
      type: object
      additionalProperties: false
      required:
      - account_required
      - amount
      - checkout_url
      - credits
      - expires_at
      - instructions
      - poll_after_seconds
      - purchase_id
      - requires_user_interaction
      - status
      - status_url
      - wallet_id
      properties:
        account_required:
          type: boolean
          const: false
        amount:
          $ref: '#/components/schemas/GuestWalletAmount'
        api_key:
          type: string
          format: password
          description: 'Paid-read bearer credential returned only by initial creation. Store it as a secret. Never place it in a URL or log.

            '
          example: xq_example_returned_once
        authorization:
          type: object
          additionalProperties: false
          required:
          - header
          - scheme
          properties:
            header:
              type: string
              enum:
              - Authorization
              example: Authorization
            scheme:
              type: string
              enum:
              - Bearer
              example: Bearer
        checkout_url:
          type: string
          format: uri
          pattern: ^https://buy\.stripe\.com/
          description: Raw Stripe-hosted checkout URL for user interaction.
          example: https://buy.stripe.com/example
        credits:
          type: string
          pattern: ^\d+$
          description: Credits granted after verified payment.
          example: '66666'
        credential_notice:
          type: string
          const: Store api_key and the Idempotency-Key securely before sharing checkout_url. No email recovery is available.
        expires_at:
          type: string
          format: date-time
          description: Time when the pending checkout expires.
          example: '2026-07-13T13:00:00.000Z'
        instructions:
          type: string
          const: Give checkout_url to the user. They must complete payment on Stripe. Never submit payment for them. After payment, poll status_url every poll_after_seconds until latest_purchase.status is no longer pending.
        poll_after_seconds:
          type: integer
          const: 2
          description: Wait at least this long before polling status_url.
        purchase_id:
          type: string
          pattern: ^gp_[A-Za-z0-9_-]+$
          example: gp_example
        requires_user_interaction:
          type: boolean
          const: true
        status:
          type: string
          enum:
          - creating
          - pending
          - paid
          - expired
          - failed
          - refunded
          - disputed
          example: pending
        status_url:
          type: string
          format: uri
          const: https://xquik.com/api/v1/guest-wallets/status
        wallet_id:
          type: string
          pattern: ^gw_[A-Za-z0-9_-]+$
          example: gw_example
    GuestWalletStatusResponse:
      description: Current balance, usability, and latest guest purchase state.
      type: object
      additionalProperties: false
      required:
      - balance
      - latest_purchase
      - poll_after_seconds
      - scope
      - status
      - top_up
      - usable
      - wallet_id
      properties:
        balance:
          type: string
          pattern: ^\d+$
          example: '66666'
        latest_purchase:
          description: Latest purchase state. This does not determine usability.
          anyOf:
          - $ref: '#/components/schemas/GuestWalletPurchaseStatus'
          - type: 'null'
          example:
            amount:
              amount_minor: 1000
              currency: usd
            checkout_url: null
            credits: '66666'
            expires_at: '2026-07-13T13:00:00.000Z'
            purchase_id: gp_example
            status: paid
        poll_after_seconds:
          description: Polling delay while payment is pending. Null means stop.
          anyOf:
          - type: integer
            const: 2
          - type: 'null'
          example: 2
        scope:
          type: string
          const: paid_reads
        status:
          type: string
          description: 'Combined wallet and pending-checkout state. A pending top-up can coexist with usable true. Terminal expired or failed states require a new guest wallet.

            '
          enum:
          - active
          - pending
          - expired
          - failed
          - frozen
          - closed
          example: active
        top_up:
          description: Top-up action when usable and no checkout is pending.
          anyOf:
          - type: object
            additionalProperties: false
            required:
            - method
            - path
            properties:
              method:
                type: string
                const: POST
              path:
                type: string
                const: /api/v1/guest-wallets/topups
          - type: 'null'
          example:
            method: POST
            path: /api/v1/guest-wallets/topups
        usable:
          type: boolean
          description: Authoritative paid-read readiness. Use instead of status.
          example: true
        wallet_id:
          type: string
          pattern: ^gw_[A-Za-z0-9_-]+$
          example: gw_example
    GuestWalletTopupResponse:
      description: Existing guest wallet top-up response without a new key.
      allOf:
      - $ref: '#/components/schemas/GuestWalletCheckoutResponse'
      - not:
          anyOf:
          - type: object
            properties:
              api_key:
                type: string
            required:
            - api_key
          - type: object
            properties:
              authorization:
                type: object
            required:
            - authorization
    GuestWalletAmount:
      description: Confirmed USD amount for a guest wallet purchase.
      type: object
      additionalProperties: false
      required:
      - amount_minor
      - currency
      properties:
        amount_minor:
          type: integer
          minimum: 1000
          maximum: 25000
          description: USD amount in cents. Accepted range is $10-$250.
          example: 1000
        currency:
          type: string
          const: usd
    GuestWalletPurchaseStatus:
      description: Latest guest wallet purchase fulfillment state.
      type: object
      additionalProperties: false
      required:
      - amount
      - checkout_url
      - credits
      - expires_at
      - purchase_id
      - status
      properties:
        amount:
          $ref: '#/components/schemas/GuestWalletAmount'
        checkout_url:
          anyOf:
          - type: string
            format: uri
            pattern: ^https://buy\.stripe\.com/
          - type: 'null'
          description: Present only while the purchase is pending.
          example: null
        credits:
          type: string
          pattern: ^\d+$
          example: '66666'
        expires_at:
          type: string
          format: date-time
          example: '2026-07-13T13:00:00.000Z'
        purchase_id:
          type: string
          pattern: ^gp_[A-Za-z0-9_-]+$
          example: gp_example
        status:
          type: string
          enum:
          - creating
          - pending
          - paid
          - expired
          - failed
          - refunded
          - disputed
          example: paid
    GuestWalletCreateResponse:
      description: Initial guest wallet response containing the one-time key.
      allOf:
      - $ref: '#/components/schemas/GuestWalletCheckoutResponse'
      - type: object
        required:
        - api_key
        - authorization
        - credential_notice
    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
          example: invalid_input
          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
            - 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
            - 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
            - draft_not_found
            - favoriters_unavailable
            - forbidden
            - guest_wallet_unavailable
            - guest_wallets_disabled
            - guest_wallets_unavailable
            - idempotency_conflict
            - idempotency_key_conflict
            - invalid_community_id
            - invalid_idempotency_key
            - invalid_list_id
            - invalid_payment_amount
            - invalid_range
            - login_rate_limited
            - missing_idempotency_key
            - missing_ids
            - no_cached_style
            - passkey_required
            - rate_limited
            - read_request_timeout
            - replies_incomplete
            - support_media_rate_limit
            - support_request_rate_limit
            - too_many_ids
            - 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
            example: invalid_input
          - type: object
            title: StructuredError
            required:
            - message
            - type
            - code
            properties:
              message:
                type: string
                example: Invalid input. Check the request body.
              type:
                type: string
                enum:
                - api_error
                - authentication_error
                - billing_error
                - dependency_error
                - invalid_request_error
                - permission_error
                - rate_limit_error
                example: invalid_request_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
                - 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
                - no_media
                - no_credits
                - no_subscription
                - not_found
                - payment_failed
                - rate_limit_exceeded
               

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/xquik-api/refs/heads/main/openapi/xquik-api-guest-wallets-api-openapi.yml