Skip to main content
GET
t.co link resolver API for X (Twitter) short links
1 credit per resolved link · All plans from $0.00012/credit
Resolve links returns the URL each t.co link leads to. Send 1 to 100 links in 1 call. The endpoint is GET /api/v1/x/links/resolve.
Use GET /x/links/resolve when you hold t.co links and need their targets. X shortens every link in a post to a t.co link. Xquik reads where each link points and never opens the target page. Collect the t.co links from tweet text, bios, or your own logs. Send up to 100 in 1 call, separated by commas. links comes back in the order sent, with each link once. A link t.co does not have comes back without resolvedUrl. It costs nothing. Each resolved link costs 1 credit. A link X does not answer for in time comes back in unprocessedUrls. It costs nothing. Send it again in your next call. resolvedUrl is the address the link’s author set. Xquik does not check it. Check a target before you open it. Tweets already carry their links’ targets in entities.urls[].expanded_url. Read them with Get tweet when you hold the tweet ID.

Query parameters

string
required
1 to 100 links of the form https://t.co/Xe1nm2pkSX, separated by commas. Any other link returns 400 invalid_input.

Headers

string
Full account key. Sessions and OAuth also work.
string
Bearer xq_your_guest_key_here for paid_reads.

Response

200 OK

Resolved links in the order sent. Link object fields.
string
The t.co link, as https://t.co/<code>.
string
Target URL, as the link’s author set it. Absent for a link t.co does not have.
string[]
Links not read, in the order sent. X did not answer for them in time, or available credits ran out. Send them again.

400 Invalid input

urls is missing, holds over 100 links, or holds a link in another form. Send each link as https://t.co/ and its code.

401 Unauthenticated

Missing or invalid API key. Check the x-api-key header value.

402 Payment required

Account keys get account options. Guest keys get guest top-up only. No checkout starts automatically. Confirm any payment action.

502 X API unavailable

The read service returned an error. Retry after a short delay.

503 Service busy

X answered none of the links in time, or Xquik is busy. Wait for the Retry-After header, then send the same links again. The request costs nothing.

429 Rate limit exceeded

You exceeded your tier rate limit. Wait for the Retry-After header before retrying.

424 Dependency failed

The normalized v1 response contract can return 424 when the read service is unavailable. Call GET /x/links/resolve with the link in urls. The response holds the target in links[0].resolvedUrl. Send 1 to 100 links, separated by commas. Repeated links count once. Only https://t.co/ followed by the link’s code. Other sites, http:// links, and links without https:// return 400 invalid_input. Each resolved link costs 1 credit. A link t.co does not have costs nothing. A link X does not answer for costs nothing. A refused or failed request costs nothing. The call still returns the links that resolved. The unanswered links come back in unprocessedUrls. Send them again.

Does Xquik visit the target page?

No. Xquik reads where the t.co link points and stops there.

Does this replace X’s official API?

No. This page documents Xquik, an independent third-party service. It does not document X’s official API.
Next steps. Get tweet reads a tweet with its links’ targets, or Search Tweets finds tweets that share a link.