SpideyDataAPI Reference
API navigation Twitter
TwitterQuote tweets

Create a Twitter Quote-Tweet Publishing Job

POST/v1/twitter/quote-tweets

Creates one asynchronous SpideyData quote-tweet job. This managed automation capability is not the official X API. The X auth_token is used only for this publish request and is never stored or returned. X may restrict non-API automation; review current policy and use a dedicated X account before publishing. A confirmed successful publish with a verified tweet identifier costs 50 Credits. A failed publish is released; an unknown outcome remains frozen for reconciliation and is never automatically republished.

On this page

Request example

Replace placeholders with your values. Use your Team API key for authenticated requests.

API base https://kieapi.com
curl -X POST "https://kieapi.com/v1/twitter/quote-tweets" \
  -H "Authorization: Bearer $SPIDER_API_KEY" \
  -H 'Idempotency-Key: docs-example-01' \
  -H "Content-Type: application/json" \
  -d '{
  "auth_token": "<value>",
  "tweet_text": "<value>",
  "attachment_url": "<value>",
  "confirm_publish": true
}'

Authentication

BearerAuth

Parameters

Idempotency-Key header ยท string
Caller-generated key, up to 128 characters, that identifies one API Market write and its billing event. Reuse the same key only when retrying the same logical request. Replays do not create another reservation or capture.

Request body required

application/json

TwitterQuoteTweetRequest

auth_token string (password) required
Request-only X auth_token cookie. Never stored or returned.
tweet_text string required
attachment_url string (uri) required
Full x.com or twitter.com post URL.
dark_request boolean

Default: false

media_entities array of TwitterMediaEntity
possibly_sensitive boolean

Default: false

semantic_annotation_ids array of string
include_promoted_content boolean

Default: false

confirm_publish boolean required
Must be true for this immediate write action.

Allowed: true

Responses

202 Twitter quote-tweet task accepted.

application/json

TwitterJobResponse

job TwitterJob required
400 Request validation failed.

application/json

PublicErrorResponse

error PublicError required
401 Missing or invalid API key.

application/json

PublicErrorResponse

error PublicError required
402 The Team does not have enough available Credits for the maximum reservation.

application/json

PublicErrorResponse

error PublicError required
403 Authenticated principal cannot access this resource.

application/json

PublicErrorResponse

error PublicError required
409 Billing settlement requires reconciliation, or the idempotency key was reused for a different logical request.

application/json

PublicErrorResponse

error PublicError required
429 Monthly quota was exhausted.

application/json

PublicErrorResponse

error PublicError required
502 Upstream fetch or network failure.

application/json

PublicErrorResponse

error PublicError required
503 Required runtime service is unavailable.

application/json

PublicErrorResponse

error PublicError required

Schemas

Field definitions and complete validation rules for this API. Follow a type link to its definition.

TwitterQuoteTweetRequest

object

auth_token string (password) required
Request-only X auth_token cookie. Never stored or returned.
tweet_text string required
attachment_url string (uri) required
Full x.com or twitter.com post URL.
dark_request boolean

Default: false

media_entities array of TwitterMediaEntity
possibly_sensitive boolean

Default: false

semantic_annotation_ids array of string
include_promoted_content boolean

Default: false

confirm_publish boolean required
Must be true for this immediate write action.

Allowed: true

Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "auth_token",
    "tweet_text",
    "attachment_url",
    "confirm_publish"
  ],
  "properties": {
    "auth_token": {
      "type": "string",
      "format": "password",
      "writeOnly": true,
      "minLength": 1,
      "maxLength": 4096,
      "description": "Request-only X auth_token cookie. Never stored or returned."
    },
    "tweet_text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 280
    },
    "attachment_url": {
      "type": "string",
      "format": "uri",
      "description": "Full x.com or twitter.com post URL."
    },
    "dark_request": {
      "type": "boolean",
      "default": false
    },
    "media_entities": {
      "type": "array",
      "maxItems": 4,
      "items": {
        "$ref": "#/components/schemas/TwitterMediaEntity"
      }
    },
    "possibly_sensitive": {
      "type": "boolean",
      "default": false
    },
    "semantic_annotation_ids": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "type": "string"
      }
    },
    "include_promoted_content": {
      "type": "boolean",
      "default": false
    },
    "confirm_publish": {
      "type": "boolean",
      "enum": [
        true
      ],
      "description": "Must be true for this immediate write action."
    }
  }
}

TwitterMediaEntity

object

media_id string required
tagged_users array of string
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "media_id"
  ],
  "properties": {
    "media_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "tagged_users": {
      "type": "array",
      "maxItems": 10,
      "items": {
        "type": "string"
      }
    }
  }
}

TwitterJobResponse

object

job TwitterJob required
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "job"
  ],
  "properties": {
    "job": {
      "$ref": "#/components/schemas/TwitterJob"
    }
  }
}

TwitterJob

object

Public-safe Team-scoped job without X auth_token or internal execution identifiers.

id string required
kind string required

Allowed: "quote_tweet"

status string required

Allowed: "submitting", "queued", "running", "succeeded", "failed", "unknown"

request TwitterQuoteTweetSummary required
result object | null
error TwitterJobError or null
created_at string | null (date-time)
updated_at string | null (date-time)
finished_at string | null (date-time)
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "kind",
    "status",
    "request"
  ],
  "description": "Public-safe Team-scoped job without X auth_token or internal execution identifiers.",
  "properties": {
    "id": {
      "type": "string"
    },
    "kind": {
      "type": "string",
      "enum": [
        "quote_tweet"
      ]
    },
    "status": {
      "type": "string",
      "enum": [
        "submitting",
        "queued",
        "running",
        "succeeded",
        "failed",
        "unknown"
      ]
    },
    "request": {
      "$ref": "#/components/schemas/TwitterQuoteTweetSummary"
    },
    "result": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/TwitterJobError"
        },
        {
          "type": "null"
        }
      ]
    },
    "created_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "updated_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "finished_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    }
  }
}

TwitterQuoteTweetSummary

object

tweet_text string required
attachment_url string required
dark_request boolean required
media_count integer required
possibly_sensitive boolean required
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "tweet_text",
    "attachment_url",
    "dark_request",
    "media_count",
    "possibly_sensitive"
  ],
  "properties": {
    "tweet_text": {
      "type": "string"
    },
    "attachment_url": {
      "type": "string"
    },
    "dark_request": {
      "type": "boolean"
    },
    "media_count": {
      "type": "integer",
      "minimum": 0
    },
    "possibly_sensitive": {
      "type": "boolean"
    }
  }
}

TwitterJobError

object

code string required
message string required
retryable boolean required
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "code",
    "message",
    "retryable"
  ],
  "properties": {
    "code": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    }
  }
}

PublicErrorResponse

object

error PublicError required
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "$ref": "#/components/schemas/PublicError"
    }
  }
}

PublicError

object

code string required

Allowed: "seoapi_price_pending", "seoapi_unavailable", "seoapi_busy", "seoapi_not_found", "seoapi_rate_limited", "seoapi_budget_exceeded", "seoapi_idempotency_conflict", "seoapi_insufficient_credits", "seoapi_admission_failed", "seoapi_execution_interrupted", "seoapi_delivery_unknown", "seoapi_response_invalid", "seoapi_model_unsupported", "seoapi_model_options_invalid", "seoapi_provider_rejected", "seo_price_pending", "seo_provider_blocked", "seo_local_rate_limited", "seo_fallback_unavailable", "seo_fallback_budget_exceeded", "seo_pagination_expired", "seo_delivery_uncertain", "seo_auth_required", "seo_initialization_required", "seo_permission_denied", "seo_verification_required", "seo_rate_limited", "seo_upstream_unavailable", "seo_transport_failed", "seo_invalid_response", "seo_rpc_error", "seo_period_unavailable", "seo_account_unavailable", "seo_session_busy", "seo_configuration_required", "validation_error", "invalid_request", "unsupported_feature", "authentication_required", "permission_denied", "not_found", "run_not_found", "crawl_not_found", "artifact_not_found", "session_not_found", "profile_not_found", "profile_in_use", "profile_not_ready", "profile_not_cloneable", "profile_limit_reached", "profile_proxy_conflict", "proxy_not_found", "proxy_unavailable", "invalid_session_options", "invalid_query_options", "invalid_cursor", "idempotency_key_required", "browser_session_limit_reached", "browser_capacity_exhausted", "browser_start_timeout", "browser_runtime_unavailable", "session_not_active", "controller_already_connected", "browser_relay_unavailable", "precondition_required", "precondition_failed", "timeout", "run_not_ready", "artifact_expired", "quota_exceeded", "insufficient_credits", "billing_reconciliation_required", "rate_limited", "fetch_failed", "render_failed", "maps_rate_limited", "maps_challenge", "maps_schema_changed", "maps_invalid_response", "maps_transport_failed", "maps_page_budget_exhausted", "google_trends_rate_limited", "google_trends_challenge", "google_trends_explore_failed", "google_trends_widget_missing", "google_trends_related_failed", "google_trends_invalid_response", "google_trends_transport_failed", "google_trends_collection_failed", "google_ads_account_context_missing", "google_ads_batch_failed", "google_ads_browser_context_missing", "google_ads_browser_unavailable", "google_ads_collection_failed", "google_ads_page_failed", "google_ads_protocol_drift", "google_ads_rate_limited", "google_ads_timeout", "twitter_provider_unavailable", "twitter_provider_rejected", "twitter_submission_unknown", "wechat_transport_failed", "wechat_rate_limited", "wechat_invalid_response", "wechat_redirect_rejected", "wechat_verification_required", "wechat_parse_failed", "blackhatworld_search_failed", "blackhatworld_no_results", "reddit_read_failed", "idempotency_conflict", "idempotency_in_progress", "service_unavailable", "internal_error"

message string required
type string required

Allowed: "auth", "validation", "quota", "rate_limit", "not_found", "execution", "conflict", "internal"

retryable boolean required
request_id string | null
details object
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "code",
    "message",
    "type",
    "retryable"
  ],
  "properties": {
    "code": {
      "type": "string",
      "enum": [
        "seoapi_price_pending",
        "seoapi_unavailable",
        "seoapi_busy",
        "seoapi_not_found",
        "seoapi_rate_limited",
        "seoapi_budget_exceeded",
        "seoapi_idempotency_conflict",
        "seoapi_insufficient_credits",
        "seoapi_admission_failed",
        "seoapi_execution_interrupted",
        "seoapi_delivery_unknown",
        "seoapi_response_invalid",
        "seoapi_model_unsupported",
        "seoapi_model_options_invalid",
        "seoapi_provider_rejected",
        "seo_price_pending",
        "seo_provider_blocked",
        "seo_local_rate_limited",
        "seo_fallback_unavailable",
        "seo_fallback_budget_exceeded",
        "seo_pagination_expired",
        "seo_delivery_uncertain",
        "seo_auth_required",
        "seo_initialization_required",
        "seo_permission_denied",
        "seo_verification_required",
        "seo_rate_limited",
        "seo_upstream_unavailable",
        "seo_transport_failed",
        "seo_invalid_response",
        "seo_rpc_error",
        "seo_period_unavailable",
        "seo_account_unavailable",
        "seo_session_busy",
        "seo_configuration_required",
        "validation_error",
        "invalid_request",
        "unsupported_feature",
        "authentication_required",
        "permission_denied",
        "not_found",
        "run_not_found",
        "crawl_not_found",
        "artifact_not_found",
        "session_not_found",
        "profile_not_found",
        "profile_in_use",
        "profile_not_ready",
        "profile_not_cloneable",
        "profile_limit_reached",
        "profile_proxy_conflict",
        "proxy_not_found",
        "proxy_unavailable",
        "invalid_session_options",
        "invalid_query_options",
        "invalid_cursor",
        "idempotency_key_required",
        "browser_session_limit_reached",
        "browser_capacity_exhausted",
        "browser_start_timeout",
        "browser_runtime_unavailable",
        "session_not_active",
        "controller_already_connected",
        "browser_relay_unavailable",
        "precondition_required",
        "precondition_failed",
        "timeout",
        "run_not_ready",
        "artifact_expired",
        "quota_exceeded",
        "insufficient_credits",
        "billing_reconciliation_required",
        "rate_limited",
        "fetch_failed",
        "render_failed",
        "maps_rate_limited",
        "maps_challenge",
        "maps_schema_changed",
        "maps_invalid_response",
        "maps_transport_failed",
        "maps_page_budget_exhausted",
        "google_trends_rate_limited",
        "google_trends_challenge",
        "google_trends_explore_failed",
        "google_trends_widget_missing",
        "google_trends_related_failed",
        "google_trends_invalid_response",
        "google_trends_transport_failed",
        "google_trends_collection_failed",
        "google_ads_account_context_missing",
        "google_ads_batch_failed",
        "google_ads_browser_context_missing",
        "google_ads_browser_unavailable",
        "google_ads_collection_failed",
        "google_ads_page_failed",
        "google_ads_protocol_drift",
        "google_ads_rate_limited",
        "google_ads_timeout",
        "twitter_provider_unavailable",
        "twitter_provider_rejected",
        "twitter_submission_unknown",
        "wechat_transport_failed",
        "wechat_rate_limited",
        "wechat_invalid_response",
        "wechat_redirect_rejected",
        "wechat_verification_required",
        "wechat_parse_failed",
        "blackhatworld_search_failed",
        "blackhatworld_no_results",
        "reddit_read_failed",
        "idempotency_conflict",
        "idempotency_in_progress",
        "service_unavailable",
        "internal_error"
      ]
    },
    "message": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "auth",
        "validation",
        "quota",
        "rate_limit",
        "not_found",
        "execution",
        "conflict",
        "internal"
      ]
    },
    "retryable": {
      "type": "boolean"
    },
    "request_id": {
      "type": [
        "string",
        "null"
      ]
    },
    "details": {
      "type": "object",
      "additionalProperties": true
    }
  }
}