Retrieve an ad
Reads one synced ad by the platform's id, with its landing URL and the tracking parameters it lacks.
Needs project:ads:read.
Guide: Ads reports
AuthorizationBearer <token>
A project secret key: vh_sk_... for production, vh_sk_test_... for test. Keep it on your servers.
In: header
Path parameters
projectId*string
The project's id, proj_.... A secret key works only in the project it belongs to.
adId*string
The platform's id of the ad.
Examples
curl -X GET "https://api.voidhash.com/api/v1/projects/proj_tz4a98xxat96iws9zmbrgj3a/ads/ads/120210000000000003" \ -H "Authorization: Bearer vh_sk_..."{ "projectId": "proj_tz4a98xxat96iws9zmbrgj3a", "adAccountId": "ad_acct_k3m9x2c7v1b8n4q6w0e5r2t7", "platform": "meta", "status": "on", "deliveryStatus": "delivering", "deliveryReasons": [], "destination": "web_to_app", "budget": { "amount": 20000, "currency": "USD", "period": "daily", "level": "campaign" }, "startsAt": "2026-02-28T23:00:00.000Z", "endsAt": null, "createdAt": "2026-02-27T14:10:00.000Z", "updatedAt": "2026-03-01T09:30:00.000Z", "syncedAt": "2026-03-14T10:00:12.000Z", "id": "120210000000000003", "name": "Spring trial - 15s workout", "platformUrl": "https://adsmanager.facebook.com/adsmanager/manage/ads?act=1234567890&selected_ad_ids=120210000000000003", "campaignId": "120210000000000001", "adGroupId": "120210000000000002", "creativeId": "120210000000000004", "landingUrl": "https://example.app/start/spring", "urlParameters": "utm_source=facebook&campaign_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}", "missingTrackingParameters": []}{ "error": { "type": "invalid_request", "code": "string", "message": "string", "param": "string" }}{ "error": { "type": "unauthenticated", "code": "invalid_api_key", "message": "This secret key is not valid." }}{ "error": { "type": "permission_denied", "code": "permission_denied", "message": "Insufficient permissions." }}{ "error": { "type": "not_found", "code": "ad_not_found", "message": "This project has no synced ad 120210000000000003.", "param": "adId" }}{ "error": { "type": "internal", "code": "internal_error", "message": "Something went wrong on our side. Try again, and contact support with the Request-Id header if it keeps failing." }}Response body
application/json
application/json
application/json
application/json
application/json
application/json
Errors
| Status | type | code | When |
|---|---|---|---|
| 404 | not_found | ad_not_found | — |
It can also fail with the errors every operation shares, such as unauthenticated; see Errors.
More in Ads
- List campaigns
GET - Retrieve a campaign
GET - List ad groups
GET - Retrieve an ad group
GET - List ads
GET - Preview a creative
GET - Retrieve ads settings
GET - Update ads settings
PATCH - Report ad performance
POST - Report creatives
POST - Report ad cohorts
POST - Report ad changes
POST
Something wrong or missing on this page? Tell us by email or on Discord.