Documentation Index

Fetch the complete documentation index at: /llms.txt

Use this file to discover all available pages before exploring further.

Skip to main content
PUT
/
styles
/
{id}
Save custom style
curl --request PUT \
  --url https://xquik.com/api/v1/styles/{id} \
  --header 'Content-Type: <content-type>' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "label": "<string>",
  "tweets": [
    {
      "text": "<string>"
    }
  ]
}
'
import requests

url = "https://xquik.com/api/v1/styles/{id}"

payload = {
"label": "<string>",
"tweets": [{ "text": "<string>" }]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "<content-type>"
}

response = requests.put(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': '<content-type>'},
body: JSON.stringify({label: '<string>', tweets: [{text: '<string>'}]})
};

fetch('https://xquik.com/api/v1/styles/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://xquik.com/api/v1/styles/{id}"

payload := strings.NewReader("{\n \"label\": \"<string>\",\n \"tweets\": [\n {\n \"text\": \"<string>\"\n }\n ]\n}")

req, _ := http.NewRequest("PUT", url, payload)

req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "<content-type>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
Free - does not consume credits
This endpoint does not consume usage credits. No subscription required.
curl -X PUT https://xquik.com/api/v1/styles/casual \
  -H "x-api-key: xq_YOUR_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "casual",
    "tweets": [
      { "text": "just shipped a new feature, feels good" },
      { "text": "hot take: tabs > spaces and I will die on this hill" },
      { "text": "debugging at 2am hits different when the fix is a missing comma" }
    ]
  }' | jq
const response = await fetch("https://xquik.com/api/v1/styles/casual", {
  method: "PUT",
  headers: {
    "x-api-key": "xq_YOUR_KEY_HERE",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    label: "casual",
    tweets: [
      { text: "just shipped a new feature, feels good" },
      { text: "hot take: tabs > spaces and I will die on this hill" },
      { text: "debugging at 2am hits different when the fix is a missing comma" },
    ],
  }),
});
const data = await response.json();
import requests

response = requests.put(
    "https://xquik.com/api/v1/styles/casual",
    headers={"x-api-key": "xq_YOUR_KEY_HERE"},
    json={
        "label": "casual",
        "tweets": [
            {"text": "just shipped a new feature, feels good"},
            {"text": "hot take: tabs > spaces and I will die on this hill"},
            {"text": "debugging at 2am hits different when the fix is a missing comma"},
        ],
    },
)
data = response.json()
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    body, _ := json.Marshal(map[string]interface{}{
        "label": "casual",
        "tweets": []map[string]string{
            {"text": "just shipped a new feature, feels good"},
            {"text": "hot take: tabs > spaces and I will die on this hill"},
            {"text": "debugging at 2am hits different when the fix is a missing comma"},
        },
    })

    req, err := http.NewRequest("PUT", "https://xquik.com/api/v1/styles/casual", bytes.NewReader(body))
    if err != nil {
        panic(err)
    }
    req.Header.Set("x-api-key", "xq_YOUR_KEY_HERE")
    req.Header.Set("Content-Type", "application/json")

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var data map[string]interface{}
    if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
        panic(err)
    }
    fmt.Println(data)
}

Path parameters

string
required
Style label used as the identifier. 1-50 characters. Must start with a letter or number. Allows letters, numbers, spaces, dots, hyphens, and apostrophes. This becomes the key for retrieving the style later.

Headers

string
required
Your API key. Session cookie authentication is also supported. Generate a key from the dashboard.
string
required
Must be application/json.

Body

string
required
Style label (e.g. “Professional”, “Casual”, “My Style”). Used to identify the style profile.
object[]
required
Array of tweet objects (1-100) that define the writing style. Each object must have a text field.

Response

  • 200 OK
  • 400 Invalid Input
  • 401 Unauthenticated
  • 429 Rate Limited
string
Style label (normalized to lowercase).
number
Number of tweets saved in the style profile.
boolean
Always false for custom styles.
string
ISO 8601 timestamp when the style was saved.
object[]
Array of saved tweets.
{
  "xUsername": "casual",
  "tweetCount": 3,
  "isOwnAccount": false,
  "fetchedAt": "2026-02-24T10:30:00.000Z",
  "tweets": [
    {
      "id": "0",
      "text": "just shipped a new feature, feels good",
      "authorUsername": "casual",
      "createdAt": "2026-02-24T10:30:00.000Z"
    },
    {
      "id": "1",
      "text": "hot take: tabs > spaces and I will die on this hill",
      "authorUsername": "casual",
      "createdAt": "2026-02-24T10:30:00.000Z"
    },
    {
      "id": "2",
      "text": "debugging at 2am hits different when the fix is a missing comma",
      "authorUsername": "casual",
      "createdAt": "2026-02-24T10:30:00.000Z"
    }
  ]
}
If a style with this label already exists, it will be replaced with the new data.
Next steps: List Styles to see all saved styles, Get Style to retrieve a specific style, or Compare Styles to compare two styles side by side.
Last modified on May 5, 2026
Morty Proxy This is a proxified and sanitized view of the page, visit original site.