> ## Documentation Index
> Fetch the complete documentation index at: https://docs.invoca.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Promo Numbers

export const MethodTag = ({method = "GET", path, label, colors = {}}) => {
  const presets = {
    get: {
      label: "GET",
      light: {
        bg: "#DCFCE7",
        text: "#15803D"
      },
      dark: {
        bg: "rgba(34,197,94,0.16)",
        text: "#4ADE80"
      }
    },
    post: {
      label: "POST",
      light: {
        bg: "#DBEAFE",
        text: "#1D4ED8"
      },
      dark: {
        bg: "rgba(59,130,246,0.16)",
        text: "#60A5FA"
      }
    },
    put: {
      label: "PUT",
      light: {
        bg: "#FEF3C7",
        text: "#B45309"
      },
      dark: {
        bg: "rgba(245,158,11,0.16)",
        text: "#FBBF24"
      }
    },
    patch: {
      label: "PATCH",
      light: {
        bg: "#F3E8FF",
        text: "#7E22CE"
      },
      dark: {
        bg: "rgba(168,85,247,0.16)",
        text: "#C084FC"
      }
    },
    delete: {
      label: "DEL",
      light: {
        bg: "#FEE2E2",
        text: "#B91C1C"
      },
      dark: {
        bg: "rgba(239,68,68,0.16)",
        text: "#F87171"
      }
    }
  };
  const fallback = {
    label: String(method).toUpperCase(),
    light: {
      bg: "#F3F4F6",
      text: "#374151"
    },
    dark: {
      bg: "rgba(156,163,175,0.16)",
      text: "#D1D5DB"
    }
  };
  const preset = presets[String(method).toLowerCase()] || fallback;
  const light = {
    ...preset.light,
    ...colors.light || ({})
  };
  const dark = {
    ...preset.dark,
    ...colors.dark || ({})
  };
  const css = `
    .invoca-method-tag {
      display: inline-block;
      padding: 1px 8px;
      margin-right: 8px;
      border-radius: 8px;
      font-size: 10px;
      line-height: 18px;
      font-weight: 700;
      letter-spacing: 0.4px;
      text-transform: uppercase;
      vertical-align: middle;
      background: var(--imt-bg);
      color: var(--imt-fg);
    }
    .invoca-method-path {
      font-size: 13px;
    }
    [data-component-part="accordion-icon"]:has(.invoca-method-tag) {
      width: auto;
      height: auto;
      flex-shrink: 0;
    }
    [data-component-part="accordion-icon"] .invoca-method-tag {
      margin-right: 0;
    }
    [data-component-part="accordion-button"]:has(.invoca-method-tag) {
      flex-wrap: wrap;
      row-gap: 6px;
    }
    [data-component-part="accordion-button"]:has(.invoca-method-tag) [data-component-part="accordion-icon"] {
      flex: 1 1 0;
      min-width: 0;
      overflow-wrap: anywhere;
    }
    [data-component-part="accordion-button"]:has(.invoca-method-tag) [data-component-part="accordion-title-container"] {
      flex: 0 0 calc(100% - 8px);
      padding-left: 20px;
    }
    [data-component-part="accordion-button"]:has(.invoca-method-tag) [data-component-part="accordion-title"] {
      font-size: 12px;
    }
    .dark .invoca-method-tag,
    [data-theme="dark"] .invoca-method-tag {
      background: var(--imt-bg-dark);
      color: var(--imt-fg-dark);
    }
  `;
  const vars = {
    "--imt-bg": light.bg,
    "--imt-fg": light.text,
    "--imt-bg-dark": dark.bg,
    "--imt-fg-dark": dark.text
  };
  return <span>
      <style>{css}</style>
      <span className="invoca-method-tag" style={vars}>
        {label || preset.label}
      </span>
      {path ? <code className="invoca-method-path">{path}</code> : null}
    </span>;
};

## Advertiser Campaign and Affiliate Campaign Promo Numbers

The API provides the ability to manage promo numbers for a given campaign. Promo numbers are uniquely identified by the phone number itself and these numbers are always generated by the Invoca platform. Therefore, the operations on the promo numbers interface are not idempotent. When you POST a promo number, we return the promo\_number in the response body. This capability is JSON‐only.

<table className="parameters docutils align-default"><thead><tr className="row-odd"><th className="head"><p>Property</p></th><th className="head"><p>Type</p></th><th className="head"><p>Value</p></th></tr></thead><tbody><tr className="row-even"><td><p>id</p></td><td><p>integer (read-only)</p></td><td><p>The internal Invoca id of the promo number.</p></td></tr><tr className="row-odd"><td><p>id\_from\_network</p></td><td><p>string</p></td><td><p>Network specific id of the promo number.</p></td></tr><tr className="row-even"><td><p>description</p></td><td><p>string (required)</p></td><td><p>Arbitrary description</p></td></tr><tr className="row-odd"><td><p>media\_type</p></td><td><p>string (required)</p></td><td><p>one of:</p><p>“Online: Content / Review Site”</p><p>“Online: Discount / Coupon Site”</p><p>“Online: Display”</p><p>“Online: Email”</p><p>“Online: Rewards / Incentive”</p><p>“Online: Lead Form / Co Reg”</p><p>“Online: Search”</p><p>“Online: Social Media”</p><p>“Online: Software”</p><p>“Online: Other”</p><p>“Mobile: Apps”</p><p>“Mobile: Display”</p><p>“Mobile: Search”</p><p>“Mobile: SMS”</p><p>“Mobile: Other”</p><p>“Offline: Business Publication”</p><p>“Offline: Call Center”</p><p>“Offline: Direct Mail”</p><p>“Offline: Directory”</p><p>“Offline: Newspaper”</p><p>“Offline: In­Call Ad”</p><p>“Offline: Magazine”</p><p>“Offline: Outdoor”</p><p>“Offline: Radio”</p><p>“Offline: TV”</p><p>“Offline: Other”</p></td></tr><tr className="row-even"><td><p>object\_url</p></td><td><p>string (read-only)</p></td><td><p>URL for reaching the promo number in the UI.</p></td></tr><tr className="row-odd"><td><p>local\_center</p></td><td><p>hash</p></td><td><p>Requires one of the following</p><p>City & State required together</p><p>A filled field determines the center to start looking for local numbers at.</p><p><strong>“tn\_prefix”</strong>: an npa</p><p><strong>“zipcode”</strong>: a valid zipcode</p><p><strong>“city”</strong>: a valid city</p><p><strong>“state”</strong>: a valid state</p></td></tr><tr className="row-even"><td><p>local\_number\_preferences</p></td><td><p>hash</p></td><td><p>Both are optional</p><p><strong>“search\_radius\_miles”</strong>: An integer, greater than or equal to 0. Default is 240. Represents the number of miles from the location to search.</p><p><strong>“restrict\_search\_to\_state”</strong>: A boolean. Default: True. Used to restrict search to be within state boundaries.</p></td></tr><tr className="row-odd"><td><p>tn\_prefix\_whitelist</p></td><td><p>array of strings</p></td><td><p>an array of stringified limiters on the boundaries of where to look for local numbers given as npas (ex. \[“805”, “212”])</p></td></tr><tr className="row-even"><td><p>promo\_type</p></td><td><p>string (optional)</p></td><td><p>For international campaigns that support local or mobile numbers. If not passed then promo numbers will default to the organizational default. (US/CA campaigns will continue to use local\_center for local numbers)</p><p>“Local”</p><p>“Mobile”</p></td></tr><tr className="row-odd"><td><p>adwords\_account\_id</p></td><td><p>string (optional)</p></td><td><p>The ID of the AdWords client account to be associated with this promo number. Requires media type to be set to ‘Google Call Extension’. (ex. “627-345-9815”)</p></td></tr><tr className="row-even"><td><p>destination\_advertiser\_id\_from\_network</p></td><td><p>string (optional)</p></td><td><p>The ID of the advertiser in which the promo number is intended to be moved to.  If this field is used, <strong>destination\_advertiser\_campaign\_id\_from\_network</strong> also must be included.</p><ul className="simple"><li><p>Do not include this field if you do not intend to move the promo number.</p></li></ul></td></tr><tr className="row-odd"><td><p>destination\_advertiser\_campaign\_id\_from\_network</p></td><td><p>string (optional)</p></td><td><p>The ID of the advertiser campaign in which the promo number is intended to be moved to.  If this field is used, <strong>destination\_advertiser\_id\_from\_network</strong> also must be included.</p><ul className="simple"><li><p>Do not include this field if you do not intend to move the promo number.</p></li></ul></td></tr><tr className="row-even"><td><p>destination\_affiliate\_id\_from\_network</p></td><td><p>string (optional)</p></td><td><p>The ID of the affiliate in which the promo number is intended to be moved to. Only to be used when moving promo numbers between affiliate campaigns. If this field is used, both <strong>destination\_advertiser\_campaign\_id\_from\_network</strong> and <strong>destination\_advertiser\_id\_from\_network</strong> also must be included.</p><ul className="simple"><li><p>Do not include this field if you do not intend to move the promo number.</p></li></ul></td></tr></tbody></table>

## Custom Data

Promo numbers may have Custom Data Fields applied to them, which will be applied to calls originating through the promo number. To apply Custom Data Values to a promo number, the top level parameter `custom_data` should be assigned a hash with each pair’s key corresponding to a partner name. The value of the pair should be the value to be applied.

For the following example, we would apply the value “Offline newspaper” to the Custom Data Field “channel”.

```json theme={null}
{
  "custom_data": {
    "channel": "Offline newspaper"
  }
}
```

## API Endpoints

The following endpoints are for use when you have your own ID’s (id\_from\_network) and wish to use that as the identifier.

`https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers_by_id/<promo_number_id_from_network>.json`

<AccordionGroup>
  <Accordion title="Get all Promo Numbers" icon={<MethodTag method="get" path="/promo_numbers_by_id"/>}>
    #### Examples

    Read all Advertiser Campaign Promo Numbers as an array

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers_by_id.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    [
      {
        "id": 21,
        "id_from_network": "4531",
        "media_type": "Online: Display",
        "description": "Halloween Promo Number 1",
        "promo_number": "8001234567",
        "object_url": "https://invoca.net/a_campaigns/promo_numbers/11",
        "custom_data": {
          "channel": "Online lead"
        }
      }
    ]
    ```

    ***

    Read all Affiliate Campaign Promo Numbers as an array

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers_by_id.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    [
      {
        "id": 21,
        "id_from_network": "4531",
        "media_type": "Online: Display",
        "description": "Halloween Promo Number 1",
        "promo_number": "8001234567",
        "object_url": "https://invoca.net/p_campaigns/promo_numbers/14/11",
        "custom_data": {
          "channel": "Online lead"
        }
      }
    ]
    ```
  </Accordion>

  <Accordion title="Read a Promo Number" icon={<MethodTag method="get" path="/promo_numbers_by_id/<promo_number_id>"/>}>
    #### Examples

    Read a specific Advertiser Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers_by_id/<promo_number_id_from_network>.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    {
      "id": 21,
      "id_from_network": "4531",
      "media_type": "Online: Display",
      "description": "Halloween Promo Number 1",
      "promo_number": "8001234567",
      "object_url": "https://invoca.net/a_campaigns/promo_numbers/11",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```

    ***

    Read a specific Affiliate Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers_by_id/<promo_number_id_from_network>.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    {
      "id": 21,
      "id_from_network": "4531",
      "media_type": "Online: Display",
      "description": "Halloween Promo Number 1",
      "promo_number": "8001234567",
      "object_url": "https://invoca.net/p_campaigns/promo_numbers/14/11",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```
  </Accordion>

  <Accordion title="Create an Advertiser/Affiliate Promo Number" icon={<MethodTag method="post" path="/promo_numbers_by_id"/>}>
    #### Examples

    Create an Advertiser Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers_by_id.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "id_from_network": "1234",
      "description": "Halloween Promo Number 1",
      "media_type": "Online: Display"
    }
    ```

    Response Code: 201

    Response Body:

    ```json theme={null}
    {
      "id": 12,
      "id_from_network": "1234",
      "media_type": "Online: Display",
      "promo_number": "8777657743",
      "description": "Halloween Promo Number 1",
      "object_url": "https://invoca.net/a_campaigns/promo_numbers/12",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```

    ***

    Create an Advertiser Campaign Local Promo Number with tn\_prefix

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers_by_id.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "id_from_network": "1234",
      "description": "Halloween Promo Number 1",
      "media_type": "Online: Display",
      "local_center": {
        "tn_prefix": "805"
      },
      "tn_prefix_whitelist": ["805"]
    }
    ```

    Response Code: 201

    Response Body:

    ```json theme={null}
    {
      "id": 12,
      "id_from_network": "1234",
      "media_type": "Online: Display",
      "promo_number": "8057657743",
      "description": "Halloween Promo Number 1",
      "object_url": "https://invoca.net/a_campaigns/promo_numbers/12",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```

    ***

    Create an Advertiser Campaign Local Promo Number with city/state

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers_by_id.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "id_from_network": "1234",
      "description": "Halloween Promo Number 1",
      "media_type": "Online: Display",
      "local_center": {
        "city": "Santa Barbara",
        "state": "CA"
      }
    }
    ```

    Response Code: 201

    Response Body:

    ```json theme={null}
    {
      "id": 12,
      "id_from_network": "1234",
      "media_type": "Online: Display",
      "promo_number": "8057657743",
      "description": "Halloween Promo Number 1",
      "object_url": "https://invoca.net/a_campaigns/promo_numbers/12",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```

    ***

    Create an Affiliate Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers_by_id.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "id_from_network": "1234",
      "description": "Halloween Promo Number 1",
      "media_type": "Online: Display"
    }
    ```

    Response Code: 201

    Response Body:

    ```json theme={null}
    {
      "id": 12,
      "id_from_network": "1234",
      "media_type": "Online: Display",
      "promo_number": "8777657743",
      "description": "Halloween Promo Number 1",
      "object_url": "https://invoca.net/p_campaigns/promo_numbers/14/11",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```

    ***

    Create a Google Call Extension Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers_by_id.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "id_from_network": "1234",
      "description": "Google Call Extension Demo",
      "media_type": "Google Call Extension",
      "adwords_account_id": "7567575756755"
    }
    ```

    Response Code: 201

    Response Body:

    ```json theme={null}
    {
      "id": 12,
      "id_from_network": "1234",
      "media_type": "Google Call Extension",
      "promo_number": "8777657743",
      "description": "Google Call Extension Demo",
      "object_url": "https://invoca.net/a_campaigns/promo_numbers/12",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```
  </Accordion>

  <Accordion title="Update a Campaign Promo Number" icon={<MethodTag method="put" path="/promo_numbers_by_id/<promo_number_id>"/>}>
    #### Examples

    Update an Advertiser Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers_by_id/<promo_number_id_from_network>.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1 Updated",
      "media_type": "Online: Display"
    }
    ```

    Response Code: 200

    Response Body:

    Same as a GET response, includes all the promo number properties.

    ***

    Update Affiliate Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers_by_id/<promo_number_id_from_network>.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1 Updated",
      "media_type": "Online: Display"
    }
    ```

    Response Code: 200

    Response Body:

    Same as a GET response, includes all the promo number properties.

    ***

    Moving an Advertiser Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers_by_id/<promo_number_id_from_network>.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1 Updated",
      "media_type": "Online: Display",
      "destination_advertiser_id_from_network": "123",
      "destination_advertiser_campaign_id_from_network": "456"
    }
    ```

    Response Code: 200

    Response Body:

    Same as a GET response, includes all the promo number properties.

    ***

    Moving an Affiliate Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers_by_id/<promo_number_id_from_network>.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1 Updated",
      "media_type": "Online: Display",
      "destination_advertiser_id_from_network": "123",
      "destination_advertiser_campaign_id_from_network": "456",
      "destination_affiliate_id_from_network": "789"
    }
    ```

    Response Code: 200

    Response Body:

    Same as a GET response, includes all the promo number properties.
  </Accordion>

  <Accordion title="Delete a Campaign Promo Number" icon={<MethodTag method="delete" path="/promo_numbers_by_id/<promo_number_id>"/>}>
    #### Examples

    Delete an Advertiser Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers_by_id/<promo_number_id_from_network>.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    {
    }
    ```

    ***

    Delete an Affiliate Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers_by_id/<promo_number_id_from_network>.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    {
    }
    ```
  </Accordion>
</AccordionGroup>

The following endpoints are for use when you do **not** have your own ID’s (id\_from\_network) and you treat the phone number as the identifier.

`https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers/<promo_number>.json`

<AccordionGroup>
  <Accordion title="Get all Promo Numbers" icon={<MethodTag method="get" path="/promo_numbers"/>}>
    #### Examples

    Read all Advertiser Campaign Promo Numbers as an array

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    [
      {
        "id": 21,
        "id_from_network": "4531",
        "media_type": "Online: Display",
        "description": "Halloween Promo Number 1",
        "promo_number": "8001234567",
        "object_url": "https://invoca.net/a_campaigns/promo_numbers/11",
        "custom_data": {
          "channel": "Online lead"
        }
      }
    ]
    ```

    ***

    Read all Affiliate Campaign Promo Numbers as an array

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    [
      {
        "id": 21,
        "id_from_network": "4531",
        "media_type": "Online: Display",
        "description": "Halloween Promo Number 1",
        "promo_number": "8001234567",
        "object_url": "https://invoca.net/p_campaigns/promo_numbers/14/11",
        "custom_data": {
          "channel": "Online lead"
        }
      }
    ]
    ```
  </Accordion>

  <Accordion title="Read a Promo Number" icon={<MethodTag method="get" path="/promo_numbers/<promo_number>"/>}>
    #### Examples

    Read a specific Advertiser Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers/<promo_number>.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    {
      "id": 21,
      "id_from_network": "4531",
      "media_type": "Online: Display",
      "description": "Halloween Promo Number 1",
      "promo_number": "8001234567",
      "object_url": "https://invoca.net/a_campaigns/promo_numbers/11",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```

    ***

    Read a specific Affiliate Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers/<promo_number>.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    {
      "id": 21,
      "id_from_network": "4531",
      "media_type": "Online: Display",
      "description": "Halloween Promo Number 1",
      "promo_number": "8001234567",
      "object_url": "https://invoca.net/p_campaigns/promo_numbers/14/11",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```
  </Accordion>

  <Accordion title="Create an Advertiser/Affiliate Promo Number" icon={<MethodTag method="post" path="/promo_numbers.json"/>}>
    #### Examples

    Create an Advertiser Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1",
      "media_type": "Online: Display"
    }
    ```

    Response Code: 201

    Response Body:

    ```json theme={null}
    {
      "id": 12,
      "id_from_network": "12",
      "media_type": "Online: Display",
      "promo_number": "8777657743",
      "description": "Halloween Promo Number 1",
      "object_url": "https://invoca.net/a_campaigns/promo_numbers/12",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```

    ***

    Create an Advertiser Campaign Local Promo Number with tn\_prefix

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1",
      "media_type": "Online: Display",
      "local_center": {
        "tn_prefix": "805"
      },
      "tn_prefix_whitelist": ["805"]
    }
    ```

    Response Code: 201

    Response Body:

    ```json theme={null}
    {
      "id": 12,
      "id_from_network": "12",
      "media_type": "Online: Display",
      "promo_number": "8057657743",
      "description": "Halloween Promo Number 1",
      "object_url": "https://invoca.net/a_campaigns/promo_numbers/12",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```

    ***

    Create an Advertiser Campaign Local Promo Number with city/state

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1",
      "media_type": "Online: Display",
      "local_center": {
        "city": "Santa Barbara",
        "state": "CA"
      }
    }
    ```

    Response Code: 201

    Response Body:

    ```json theme={null}
    {
      "id": 12,
      "id_from_network": "12",
      "media_type": "Online: Display",
      "promo_number": "8057657743",
      "description": "Halloween Promo Number 1",
      "object_url": "https://invoca.net/a_campaigns/promo_numbers/12",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```

    ***

    Create an Affiliate Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1",
      "media_type": "Online: Display"
    }
    ```

    Response Code: 201

    Response Body:

    ```json theme={null}
    {
      "id": 12,
      "id_from_network": "12",
      "media_type": "Online: Display",
      "promo_number": "8777657743",
      "description": "Halloween Promo Number 1",
      "object_url": "https://invoca.net/p_campaigns/promo_numbers/14/11",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```

    ***

    Create a Google Call Extension Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Google Call Extension Demo",
      "media_type": "Google Call Extension",
      "adwords_account_id": "7567575756755"
    }
    ```

    Response Code: 201

    Response Body:

    ```json theme={null}
    {
      "id": 12,
      "id_from_network": "12",
      "media_type": "Google Call Extension",
      "promo_number": "8777657743",
      "description": "Google Call Extension Demo",
      "object_url": "https://invoca.net/a_campaigns/promo_numbers/12",
      "custom_data": {
        "channel": "Online lead"
      }
    }
    ```
  </Accordion>

  <Accordion title="Update a Campaign Promo Number" icon={<MethodTag method="put" path="/promo_numbers/<promo_number>"/>}>
    #### Examples

    Update an Advertiser Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers/<promo_number>.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1 Updated",
      "media_type": "Online: Display"
    }
    ```

    Response Code: 200

    Response Body:

    Same as a GET response, includes all the promo number properties.

    ***

    Update Affiliate Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers/<promo_number>.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1 Updated",
      "media_type": "Online: Display"
    }
    ```

    Response Code: 200

    Response Body:

    Same as a GET response, includes all the promo number properties.

    ***

    Moving an Advertiser Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers/<promo_number>.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1 Updated",
      "media_type": "Online: Display",
      "destination_advertiser_id_from_network": "123",
      "destination_advertiser_campaign_id_from_network": "456"
    }
    ```

    Response Code: 200

    Response Body:

    Same as a GET response, includes all the promo number properties.

    ***

    Moving an Affiliate Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers/<promo_number>.json`

    Format: application/json

    Request Body:

    ```json theme={null}
    {
      "description": "Halloween Promo Number 1 Updated",
      "media_type": "Online: Display",
      "destination_advertiser_id_from_network": "123",
      "destination_advertiser_campaign_id_from_network": "456",
      "destination_affiliate_id_from_network": "789"
    }
    ```

    Response Code: 200

    Response Body:

    Same as a GET response, includes all the promo number properties.
  </Accordion>

  <Accordion title="Delete a Campaign Promo Number" icon={<MethodTag method="delete" path="/promo_numbers/<promo_number>"/>}>
    #### Examples

    Delete an Advertiser Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/promo_numbers/<promo_number>.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    {
    }
    ```

    ***

    Delete an Affiliate Campaign Promo Number

    Endpoint:

    `https://invoca.net/api/2022-08-01/<network_id>/advertisers/<advertiser_id_from_network>/advertiser_campaigns/<advertiser_campaign_id_from_network>/affiliates/<affiliate_id_from_network>/affiliate_campaigns/promo_numbers/<promo_number>.json`

    Format: application/json

    Response Code: 200

    Response Body:

    ```json theme={null}
    {
    }
    ```
  </Accordion>
</AccordionGroup>
