Upload an article image
POST
/articles/create-asset-upload
curl -X POST https://api.xholic.ai/v1/articles/create-asset-upload \ -H "Authorization: Bearer $XHOLIC_API_KEY" \ -H "Content-Type: application/json" \ -d '{"id":"<id>","kind":"COVER","filename":"<filename>","mimeType":"image/jpeg","byteSize":1,"dryRun":true}'xholic articles create-asset-upload --id '<id>' --kind 'COVER' --filename '<filename>' --mime-type 'image/jpeg' --byte-size 1 --dry-run{ "name": "articles_create_asset_upload", "arguments": { "id": "<id>", "kind": "COVER", "filename": "<filename>", "mimeType": "image/jpeg", "byteSize": 1, "dryRun": true }}const response = await fetch("https://api.xholic.ai/v1/articles/create-asset-upload", { method: "POST", headers: { Authorization: `Bearer ${process.env.XHOLIC_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ "id": "<id>", "kind": "COVER", "filename": "<filename>", "mimeType": "image/jpeg", "byteSize": 1, "dryRun": true }),});const result = await response.json();console.log(result.summary);import axios from "axios";
const { data } = await axios.post( "https://api.xholic.ai/v1/articles/create-asset-upload", { "id": "<id>", "kind": "COVER", "filename": "<filename>", "mimeType": "image/jpeg", "byteSize": 1, "dryRun": true }, { headers: { Authorization: `Bearer ${process.env.XHOLIC_API_KEY}` } },);console.log(data.summary);import osimport requests
response = requests.post( "https://api.xholic.ai/v1/articles/create-asset-upload", headers={"Authorization": f"Bearer {os.environ['XHOLIC_API_KEY']}"}, json={ "id": "<id>", "kind": "COVER", "filename": "<filename>", "mimeType": "image/jpeg", "byteSize": 1, "dryRun": True },)print(response.json()["summary"])package main
import ( "fmt" "io" "net/http" "os" "strings")
func main() { body := strings.NewReader(`{"id":"<id>","kind":"COVER","filename":"<filename>","mimeType":"image/jpeg","byteSize":1,"dryRun":true}`) req, _ := http.NewRequest("POST", "https://api.xholic.ai/v1/articles/create-asset-upload", body) req.Header.Set("Authorization", "Bearer "+os.Getenv("XHOLIC_API_KEY")) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() out, _ := io.ReadAll(res.Body) fmt.Println(string(out))}<?php$ch = curl_init("https://api.xholic.ai/v1/articles/create-asset-upload");curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . getenv('XHOLIC_API_KEY'), 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => '{"id":"<id>","kind":"COVER","filename":"<filename>","mimeType":"image/jpeg","byteSize":1,"dryRun":true}',]);$result = json_decode(curl_exec($ch), true);echo $result['summary'];require "net/http"require "json"
uri = URI("https://api.xholic.ai/v1/articles/create-asset-upload")req = Net::HTTP::Post.new(uri, "Content-Type" => "application/json")req["Authorization"] = "Bearer #{ENV.fetch("XHOLIC_API_KEY")}"req.body = '{"id":"<id>","kind":"COVER","filename":"<filename>","mimeType":"image/jpeg","byteSize":1,"dryRun":true}'res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }puts JSON.parse(res.body)["summary"]Start an image upload for an article cover or inline image. Returns an assetId and upload URL; PUT the bytes there, then call articles.finalize_asset.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
id
required
Article id from articles.list.
string format: uuid
kind
required
string
filename
required
string
mimeType
required
string
byteSize
required
integer
width
integer
height
integer
altText
string
account
X account to act on, as @handle. Leave it out to use the connection’s default account.
string
dryRun
Return exactly what would happen without doing it.
boolean
idempotencyKey
A unique key for this write. Repeating a call with the same key returns the first result instead of acting twice.
string
Example
{ "id": "<id>", "kind": "COVER", "filename": "<filename>", "mimeType": "image/jpeg", "byteSize": 1, "dryRun": true}Responses
Section titled “Responses”Success
Media typeapplication/json
object
ok
required
boolean
summary
required
One or two readable sentences about the result.
string
data
required
The result. Its shape depends on the action.
ids
object
key
additional properties
any
next
Array<string>
creditsCharged
number
dryRun
boolean
Example
{ "ok": true}default
Section titled “default”Error
Media typeapplication/json
object
ok
required
boolean
error
required
object
code
required
string
message
required
string
scope
required
string
retryAfterSeconds
integer
details
Example
{ "ok": false, "error": { "code": "UNAUTHENTICATED", "scope": "account" }}