Identity in view
Show the author and handle throughout the content preparation flow.
Build an approachable writing flow while respecting the account and record model beneath it.
Fans APIPlan your social workspace | BlueskyUnderstand identity and records |
|---|---|
Account identityKeep the author and handle visible beside the draft. | Account identityConfirm the account identifiers and authorization used by your connection. |
Post contentReview the text and its destination links together. | Post contentBluesky posts are structured records; native text features need the correct representation. |
ConversationKeep the original post close when preparing a response. | ConversationPreserve the record references needed for the intended action. |
ResultShow the actual outcome of an authorized request. | ResultA local preview is not evidence that a record was created. |
Bluesky’s native capabilities do not establish FansAPI availability. Confirm the connection and supported operations separately.
A clear path for the account, the message and the final review.
Select the account and keep its handle visible. Confirm the authorization method for the intended integration.
Write the text and review its links. Preserve the context behind any reply or reference.
Check identity and content together. Keep a local preview distinct from an actual published result.
Bring the account and the message together, with links presented as part of the story.
Show the author and handle throughout the content preparation flow.
Give links and mentions a deliberate representation instead of treating every post as plain text.
Review where a link leads alongside the message that introduces it.
Keep the references associated with a post or response in your application model.
Put the intended identity, text and destination in one final check.
Handle account credentials on your server using the confirmed authentication contract.
const response = await fetch(process.env.BLUESKY_API_URL, {
headers: {
[process.env.BLUESKY_AUTH_HEADER_NAME]:
process.env.BLUESKY_AUTH_HEADER_VALUE
}
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.get(
os.environ["BLUESKY_API_URL"],
headers={
os.environ["BLUESKY_AUTH_HEADER_NAME"]:
os.environ["BLUESKY_AUTH_HEADER_VALUE"]
},
timeout=30,
)
print(response.json())<?php
$request = curl_init(getenv('BLUESKY_API_URL'));
curl_setopt_array($request, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
getenv('BLUESKY_AUTH_HEADER_NAME') . ': ' .
getenv('BLUESKY_AUTH_HEADER_VALUE'),
],
]);
$response = curl_exec($request);
curl_close($request);
echo $response;require "net/http"
require "json"
uri = URI(ENV.fetch("BLUESKY_API_URL"))
request = Net::HTTP::Get.new(uri)
request[ENV.fetch("BLUESKY_AUTH_HEADER_NAME")] =
ENV.fetch("BLUESKY_AUTH_HEADER_VALUE")
response = Net::HTTP.start(uri.host, uri.port,
use_ssl: uri.scheme == "https", read_timeout: 30
) { |http| http.request(request) }
puts JSON.parse(response.body)var request = HttpRequest.newBuilder()
.uri(URI.create(System.getenv("BLUESKY_API_URL")))
.header(
System.getenv("BLUESKY_AUTH_HEADER_NAME"),
System.getenv("BLUESKY_AUTH_HEADER_VALUE"))
.timeout(Duration.ofSeconds(30))
.GET().build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());curl --fail-with-body --max-time 30 \
"$BLUESKY_API_URL" \
-H "$BLUESKY_AUTH_HEADER_NAME: $BLUESKY_AUTH_HEADER_VALUE"BLUESKY_API_URL · server environmentTranslate the content model into a readable application experience.
| Context | Interface role | What to preserve |
|---|---|---|
| Identity | Author & handle | The account associated with the proposed post. |
| Content | Post text | The message and the intended link or mention semantics. |
| Reference | Conversation context | The record relationship relevant to the selected action. |
| Outcome | Confirmed result | The result actually returned by the integration. |
The illustrated draft is not an AT Protocol record submitted to a server.
Prepare the account and permissions your Bluesky workflow needs. Confirm the FansAPI connection separately.
Identify the Bluesky account and the specific reading or writing workflow your app needs.
Check the supported authorization flow with FansAPI; do not assume public reads and account writes use the same access.
Keep credentials private, preserve relevant record references and handle real request outcomes.
The essentials before your first request.