Authentication:
- Set cookies from your browser
Step 1: GET https://beta.character.ai/chat/curated_categories/characters/
. It returns JSON. You are looking for external_id
of the character you want. This will be used for all following steps (external_id
or character_external_id
)
Step 2: POST https://beta.character.ai/chat/character/info/
with {"external_id":"..."}
as payload. Keep track of identifier
from the response as tgt
for step 4
Step 3: POST https://beta.character.ai/chat/history/create/
with the same payload as step 2. Keep track of external_id
in the response as history_external_id
.
Step 4: POST https://beta.character.ai/chat/streaming/
with payload:
{
"history_external_id": "<HISTORY ID from STEP 3>",
"character_external_id": "<CHARACTER ID from STEP 1>",
"text": "<YOUR PROMPT>",
"tgt": "<TGT from STEP 2>",
"ranking_method": "random",
"staging": false,
"model_server_address": null,
"model_server_address_exp_chars": null,
"override_prefix": null,
"override_rank": null,
"rank_candidates": null,
"filter_candidates": null,
"unsanitized_characters": null,
"prefix_limit": null,
"prefix_token_limit": null,
"stream_params": null,
"model_properties_version_keys": "",
"enable_tti": null,
"initial_timeout": null,
"insert_beginning": null,
"stream_every_n_steps": 16,
"chunks_to_pad": 8,
"is_proactive": false,
"image_rel_path": "",
"image_description": "",
"image_description_type": "",
"image_origin_type": "",
"voice_enabled": false,
"parent_msg_uuid": null,
"seen_msg_uuids": [],
"retry_last_user_msg_uuid": null,
"num_candidates": 1,
"give_room_introductions": true,
"mock_response": false
}
CLOUDFLARE!!! Use TLS spoofing! If you need help with this, look at my ChatGPT-Proxy-V4 code. You must write the program in Go or else it won't stream.
Thanks, but as idea what if you made cloudflare bypassing library or module bc nowadays most sensitive sites use cloudflare server