InstaPin API · v1
Developers
Create arrival links from your app, with an exact location, parking and entrance pins, notes and directions in Apple Maps, Google Maps or Waze.
Get an API keyAuthentication
Sign in and create a key in Dashboard → Developers. The full key is shown once. Keep it on your server, not in public website code. Revoked keys stop working immediately.
Authorization: Bearer <your API key>Base URL: https://instap.in/api/public/v1. The short /v1 paths redirect here with HTTP 308; use this base URL directly for integrations.
Limits and validation
60 requests per key in a 60-second window starting with its first request. Excess requests return 429 with Retry-After in seconds. Each authenticated request counts, including invalid inputs. Responses include X-RateLimit-Remaining.
- lat: −90 to 90; lng: −180 to 180. Supply both together.
- Pin kind: main, parking, entrance or other. Up to 20 extra pins.
- Notes: 280 characters; name: 100; address and pin labels: 300; external_id: 200.
- expires_at: ISO 8601 timestamp, for example 2026-11-15T23:59:00Z.
- JSON body: at most 64 KB. API links belong to your account and are tagged API in your dashboard.
POST /v1/links
Create an arrival link
Provide an address or both lat and lng. Coordinates take priority when both are supplied. name, note, extra pins, expires_at and external_id are optional.
curl -X POST 'https://instap.in/api/public/v1/links' \
-H "Authorization: Bearer $INSTAPIN_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"name":"Maya & Jordan’s Wedding","address":"1200 Hill Rd, Miami, FL","note":"Look for the white tent","pins":[{"kind":"parking","lat":25.7619,"lng":-80.1921,"note":"Lot B, free"},{"kind":"entrance","lat":25.7615,"lng":-80.1915,"note":"Garden gate"}],"external_id":"partner-event-123"}'201 Created · Example response
{
"id": "6fcd2d75-b8e5-45c8-b7c7-74a688231512",
"url": "https://instap.in/k7f2q",
"slug": "k7f2q",
"name": "Maya & Jordan's Wedding",
"lat": 25.7617,
"lng": -80.1918,
"label": "1200 Hill Rd, Miami, FL",
"note": "Look for the white tent",
"pins": [
{
"kind": "main",
"lat": 25.7617,
"lng": -80.1918,
"label": "1200 Hill Rd, Miami, FL",
"note": "Look for the white tent"
},
{
"kind": "parking",
"lat": 25.7619,
"lng": -80.1921,
"label": "Lot B",
"note": "Free parking"
}
],
"created_at": "2026-10-29T21:00:00Z",
"external_id": "partner-event-123",
"expires_at": null,
"active": true,
"stats": {
"page_views": 0,
"direction_taps": {
"apple": 0,
"google": 0,
"waze": 0
}
}
}GET /v1/links/{id}
Read a link and its stats
Get a link owned by your account, its pins and lifetime direction taps by maps app.
curl 'https://instap.in/api/public/v1/links/LINK_ID' -H "Authorization: Bearer $INSTAPIN_API_KEY"200 OK · Example response
{
"id": "6fcd2d75-b8e5-45c8-b7c7-74a688231512",
"url": "https://instap.in/k7f2q",
"slug": "k7f2q",
"name": "Maya & Jordan's Wedding",
"lat": 25.7617,
"lng": -80.1918,
"label": "1200 Hill Rd, Miami, FL",
"note": "Look for the white tent",
"pins": [
{
"kind": "main",
"lat": 25.7617,
"lng": -80.1918,
"label": "1200 Hill Rd, Miami, FL",
"note": "Look for the white tent"
},
{
"kind": "parking",
"lat": 25.7619,
"lng": -80.1921,
"label": "Lot B",
"note": "Free parking"
}
],
"created_at": "2026-10-29T21:00:00Z",
"external_id": "partner-event-123",
"expires_at": null,
"active": true,
"stats": {
"page_views": 0,
"direction_taps": {
"apple": 0,
"google": 0,
"waze": 0
}
}
}PATCH /v1/links/{id}
Update an arrival link
Change name, note, address, coordinates, pins, expiry or external ID. Omitted fields remain unchanged; pins replaces the extra pins, while an empty array removes them. The URL stays the same. Set expires_at to null to remove expiry.
curl -X PATCH 'https://instap.in/api/public/v1/links/LINK_ID' \
-H "Authorization: Bearer $INSTAPIN_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"lat":25.7618,"lng":-80.1920,"note":"Use the north gate"}'200 OK · Example response
{
"id": "6fcd2d75-b8e5-45c8-b7c7-74a688231512",
"url": "https://instap.in/k7f2q",
"slug": "k7f2q",
"name": "Maya & Jordan's Wedding",
"lat": 25.7618,
"lng": -80.192,
"label": "1200 Hill Rd, Miami, FL",
"note": "Use the north gate",
"pins": [
{
"kind": "main",
"lat": 25.7617,
"lng": -80.1918,
"label": "1200 Hill Rd, Miami, FL",
"note": "Look for the white tent"
},
{
"kind": "parking",
"lat": 25.7619,
"lng": -80.1921,
"label": "Lot B",
"note": "Free parking"
}
],
"created_at": "2026-10-29T21:00:00Z",
"external_id": "partner-event-123",
"expires_at": null,
"active": true,
"stats": {
"page_views": 0,
"direction_taps": {
"apple": 0,
"google": 0,
"waze": 0
}
}
}DELETE /v1/links/{id}
Deactivate a link
The link is retained in your account. Visitors see “This pin is no longer active”. Expired links show the same message.
curl -X DELETE 'https://instap.in/api/public/v1/links/LINK_ID' -H "Authorization: Bearer $INSTAPIN_API_KEY"200 OK · Example response
{
"id": "6fcd2d75-b8e5-45c8-b7c7-74a688231512",
"active": false
}GET /v1/links?external_id=…
Look up a partner ID
Returns up to 100 matching links from your account. Other accounts’ links are never returned.
curl 'https://instap.in/api/public/v1/links?external_id=partner-event-123' -H "Authorization: Bearer $INSTAPIN_API_KEY"200 OK · Example response
{
"links": [
{
"id": "6fcd2d75-b8e5-45c8-b7c7-74a688231512",
"url": "https://instap.in/k7f2q",
"slug": "k7f2q",
"name": "Maya & Jordan's Wedding",
"lat": 25.7617,
"lng": -80.1918,
"label": "1200 Hill Rd, Miami, FL",
"note": "Look for the white tent",
"pins": [
{
"kind": "main",
"lat": 25.7617,
"lng": -80.1918,
"label": "1200 Hill Rd, Miami, FL",
"note": "Look for the white tent"
},
{
"kind": "parking",
"lat": 25.7619,
"lng": -80.1921,
"label": "Lot B",
"note": "Free parking"
}
],
"created_at": "2026-10-29T21:00:00Z",
"external_id": "partner-event-123",
"expires_at": null,
"active": true,
"stats": {
"page_views": 0,
"direction_taps": {
"apple": 0,
"google": 0,
"waze": 0
}
}
}
]
}Errors
{
"error": {
"code": "invalid_lat",
"message": "lat: lat must be between -90 and 90"
}
}invalid_<field>, invalid_jsonCheck the named field or JSON body.
invalid_api_keyKey is missing, invalid or revoked.
link_not_foundNo API link with that ID belongs to your account.
body_too_largeBody exceeds 64 KB.
address_not_foundCouldn't find that address.
rate_limit_exceededWait for the Retry-After delay.
internal_error, geocoding_unavailableTry again later.