Start here. This is the direct spoken answer to practice first.
Why this question matters
Internal or partner calls need identity too. Treating service traffic as trusted just because it is server-side creates quiet security holes.
I would give each calling service or client its own identity, not one shared secret for everything. Depending on the environment, that might be OAuth client credentials, managed identity, mTLS, or an API key for simpler partner integrations. The API should authorize by client identity and scope, not only by network location.