> For the complete documentation index, see [llms.txt](https://docs.solanavibestation.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.solanavibestation.com/api-reference/lightspeed/fetchtipaddress.md).

# fetchTipAddress

## fetchTipAddress — Issue one or more dynamic Lightspeed tip addresses

> Returns one or more dynamic tip addresses for use in a Lightspeed \`sendTransaction\` submission.\
> \
> \*\*Response shape\*\*\
> \
> \- \*\*No query parameters\*\* → the legacy single-address shape: \`{ address, validity\_duration\_seconds, expires\_at }\`.\
> \- \*\*Any query parameter present\*\* → the full batch shape: \`{ addresses\[], ttl\_seconds, requested\_ttl\_seconds, expires\_at, min\_lamports, issued\_by }\`.\
> \
> The \`addresses\` array \*\*may be shorter than \`count\`\*\* if this edge's slice of the batch ran low mid-request; retry for the rest.\
> \
> \`expires\_at\` is absolute and authoritative — always prefer it over \`ttl\_seconds\`. All addresses in a batch expire together, so \`expires\_at\` may exceed "now + ttl" by up to one batch window.<br>

```json
{"openapi":"3.0.3","info":{"title":"Lightspeed: /lightspeed/fetchtipaddress","version":"1.0.0"},"tags":[{"name":"Lightspeed","description":"Low-latency transaction landing via the SVS Lightspeed engine."}],"servers":[{"url":"https://basic.rpc.solanavibestation.com","description":"Basic tier with Lightspeed"},{"url":"https://ultra.rpc.solanavibestation.com","description":"Ultra tier with Lightspeed"},{"url":"https://elite.rpc.solanavibestation.com","description":"Elite tier with Lightspeed"},{"url":"https://epic.rpc.solanavibestation.com","description":"Epic tier with Lightspeed"},{"url":"https://basic.swqos.solanavibestation.com","description":"Basic SWQoS tier with Lightspeed"},{"url":"https://ultra.swqos.solanavibestation.com","description":"Ultra SWQoS tier with Lightspeed"},{"url":"https://elite.swqos.solanavibestation.com","description":"Elite SWQoS tier with Lightspeed"}],"security":[{},{"AuthHeader":[]},{"URLParameter":[]}],"components":{"securitySchemes":{"AuthHeader":{"type":"apiKey","in":"header","name":"Authorization","description":"Pass `Authorization: <api-key>` on each request. Also the quota key."},"URLParameter":{"type":"apiKey","in":"query","name":"api_key","description":"Pass `?api_key=<api-key>` on the URL. Also the quota key."}},"schemas":{"LegacyTipAddressResponse":{"type":"object","description":"Returned when no query parameters are passed. Kept unchanged for existing clients.","required":["address","validity_duration_seconds","expires_at"],"properties":{"address":{"type":"string","description":"Base58 dynamic tip address."},"validity_duration_seconds":{"type":"integer","format":"int64","description":"TTL in seconds this address will be accepted for."},"expires_at":{"type":"integer","format":"int64","description":"Absolute Unix-seconds expiry. Authoritative — prefer over `validity_duration_seconds`."}}},"BatchTipAddressResponse":{"type":"object","description":"Returned when any query parameter is present.","required":["addresses","ttl_seconds","requested_ttl_seconds","expires_at","min_lamports","issued_by"],"properties":{"addresses":{"type":"array","description":"Base58 dynamic tip addresses. **May be shorter than `count`** if this edge's slice ran low mid-request.","items":{"type":"string"}},"ttl_seconds":{"type":"integer","format":"int64","description":"The TTL class you actually got (snapped **up** from `requested_ttl_seconds`)."},"requested_ttl_seconds":{"type":"integer","format":"int64","description":"The `ttl` query value you passed in."},"expires_at":{"type":"integer","format":"int64","description":"Absolute Unix-seconds expiry, shared by every address in the returned batch. Authoritative — prefer over `ttl_seconds`."},"min_lamports":{"type":"integer","format":"int64","description":"Rent-exempt floor for a new account. A route's `minimum_lamports` may be higher."},"issued_by":{"type":"string","description":"Informational — which edge issued the batch. Submissions may go to any edge."}}},"ErrorBody":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"max_ttl_seconds":{"type":"integer","format":"int64"},"max_count":{"type":"integer","format":"int32"}}},"QuotaExceededBody":{"type":"object","required":["error","reason"],"properties":{"error":{"type":"string","enum":["quota_exceeded"]},"reason":{"type":"string","enum":["rate limit","daily cap"]},"retry_after_seconds":{"type":"integer","format":"int64"}}},"UnavailableBody":{"type":"object","required":["error"],"properties":{"error":{"type":"string","enum":["unavailable"]},"details":{"type":"string"},"ttl_seconds":{"type":"integer","format":"int64"}}}}},"paths":{"/lightspeed/fetchtipaddress":{"get":{"operationId":"fetchTipAddress","summary":"fetchTipAddress — Issue one or more dynamic Lightspeed tip addresses","tags":["Lightspeed"],"description":"Returns one or more dynamic tip addresses for use in a Lightspeed `sendTransaction` submission.\n\n**Response shape**\n\n- **No query parameters** → the legacy single-address shape: `{ address, validity_duration_seconds, expires_at }`.\n- **Any query parameter present** → the full batch shape: `{ addresses[], ttl_seconds, requested_ttl_seconds, expires_at, min_lamports, issued_by }`.\n\nThe `addresses` array **may be shorter than `count`** if this edge's slice of the batch ran low mid-request; retry for the rest.\n\n`expires_at` is absolute and authoritative — always prefer it over `ttl_seconds`. All addresses in a batch expire together, so `expires_at` may exceed \"now + ttl\" by up to one batch window.\n","parameters":[{"name":"ttl","in":"query","required":false,"description":"Desired lifetime in seconds. Snapped **up** to the smallest TTL class this edge serves. Above `max_ttl_seconds` returns `400 ttl_too_long`.","schema":{"type":"integer","format":"int64","minimum":1}},{"name":"count","in":"query","required":false,"description":"Number of addresses to issue, `1..=max_count`.","schema":{"type":"integer","format":"int32","minimum":1,"default":1}}],"responses":{"200":{"description":"Success. Response shape depends on whether any query parameter was passed.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LegacyTipAddressResponse"},{"$ref":"#/components/schemas/BatchTipAddressResponse"}]}}}},"400":{"description":"Bad request. Possible bodies:\n- `{\"error\":\"ttl_too_long\",\"max_ttl_seconds\":86400}` — `ttl` above the max this edge serves.\n- `{\"error\":\"count_out_of_range\",\"max_count\":16}` — `count` is 0 or above the max.\n- `{\"error\":\"ttl must be an integer number of seconds\"}` — unparsable `ttl`.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Quota exceeded for this API key.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaExceededBody"}}}},"503":{"description":"Temporarily unavailable. This is normal during batch rotation and typically clears within minutes.\n","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Suggested seconds to wait before retrying."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableBody"}}}}}}}}}
```
